:root{color-scheme:dark;--bg:#0b1220;--panel:#121c2f;--panel2:#18243a;--line:#22314b;--txt:#e8eefc;--mut:#8fa1c0;--acc:#5b8cff;--acc2:#8b6bff;--on-acc:#071130;--ok:#3fd08f;--warn:#f0b94f;--bad:#f2707a;--r:16px;--shadow:0 8px 30px rgba(0,0,0,.28);--glow:radial-gradient(900px 500px at 85% -10%,color-mix(in srgb,var(--acc) 16%,transparent),transparent 60%),radial-gradient(700px 420px at -5% 110%,color-mix(in srgb,var(--acc2) 12%,transparent),transparent 60%)}
:root[data-theme=minuit]{--bg:#000;--panel:#0d0d10;--panel2:#15151a;--line:#25252d;--txt:#f4f4f6;--mut:#8c8c98;--acc:#3ea6ff;--acc2:#6ee7ff;--on-acc:#001526}
:root[data-theme=clair]{color-scheme:light;--bg:#eef2f8;--panel:#fff;--panel2:#f3f6fb;--line:#d9e1ee;--txt:#14203a;--mut:#5d6f8c;--acc:#2f6bff;--acc2:#7a5cff;--on-acc:#fff;--ok:#12a36a;--warn:#b7791f;--bad:#d64550;--shadow:0 6px 22px rgba(30,50,90,.10)}
:root[data-theme=foret]{--bg:#0a1511;--panel:#122720;--panel2:#183229;--line:#24463a;--txt:#e6f5ee;--mut:#8bb3a3;--acc:#34d399;--acc2:#a3e635;--on-acc:#03170f}
:root[data-theme=aurore]{--bg:#120a1f;--panel:#1c1230;--panel2:#251841;--line:#37275c;--txt:#f1e9ff;--mut:#a996cf;--acc:#b06bff;--acc2:#ff6bb5;--on-acc:#1a0630}
:root[data-theme=ambre]{--bg:#16100a;--panel:#241a10;--panel2:#2e2216;--line:#48351f;--txt:#faefe0;--mut:#c0a583;--acc:#ffa63d;--acc2:#ff6b4a;--on-acc:#2a1400}
:root[data-theme=ocean]{--bg:#06161c;--panel:#0d2a36;--panel2:#123644;--line:#1c4a5c;--txt:#e3f6fb;--mut:#83b3c2;--acc:#22d3ee;--acc2:#3b82f6;--on-acc:#03202a}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,"Segoe UI",system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--txt);-webkit-font-smoothing:antialiased}
body{display:flex;background:var(--glow),var(--bg)}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}
nav{width:232px;background:color-mix(in srgb,var(--panel) 88%,transparent);backdrop-filter:blur(14px);padding:18px 12px;display:flex;flex-direction:column;gap:4px;flex-shrink:0;border-right:1px solid var(--line);z-index:5}
nav .brand{display:flex;align-items:center;gap:11px;margin:2px 10px 20px;font-size:21px;font-weight:700;letter-spacing:.2px}
nav .logo{width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,var(--acc),var(--acc2));display:grid;place-items:center;color:var(--on-acc);font-weight:800;font-size:18px;box-shadow:0 6px 18px color-mix(in srgb,var(--acc) 40%,transparent)}
nav button{background:none;border:0;color:var(--mut);text-align:left;padding:11px 13px;border-radius:12px;font-size:15px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:12px;font-family:inherit;transition:background .15s,color .15s}
nav button svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
nav button:hover{background:color-mix(in srgb,var(--acc) 10%,transparent);color:var(--txt)}
nav button.on{background:linear-gradient(135deg,color-mix(in srgb,var(--acc) 26%,transparent),color-mix(in srgb,var(--acc2) 16%,transparent));color:var(--txt);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--acc) 40%,transparent)}
nav button.on svg{color:var(--acc)}nav .sp{flex:1}nav .sm{font-size:14px;padding:9px 13px}
main{flex:1;position:relative;min-width:0}
.page{position:absolute;inset:0;overflow:auto;display:none}.page.on{display:block;animation:fi .25s ease}@keyframes fi{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
#gbar,#mbar{position:absolute;top:0;left:0;right:0;height:54px;background:color-mix(in srgb,var(--panel) 90%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:none;align-items:center;gap:8px;padding:0 16px;z-index:2;overflow-x:auto}#gbar.on,#mbar.on{display:flex}#mbar.on.done{display:none}#maison.full{top:0;height:100%}#maison{top:54px;height:calc(100% - 54px)}#gbar .btn{white-space:nowrap}#jeux{top:54px;height:calc(100% - 54px)}#eggs{top:54px}
iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:none;background:#fff}iframe.on{display:block}
#notice{position:absolute;inset:0;background:var(--bg);display:none;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--mut);z-index:3}
.wrap{max-width:none;margin:0 auto;padding:34px clamp(16px,2.6vw,56px) 70px}
h2{font-size:30px;margin:0 0 6px;font-weight:700;letter-spacing:-.4px}h3.sec{font-size:13px;margin:32px 0 12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--mut);font-weight:600}.sub{color:var(--mut);margin:0 0 26px;font-size:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;color:var(--txt);text-align:left;font:inherit;box-shadow:var(--shadow)}
button.card{cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}button.card:hover{border-color:var(--acc);transform:translateY(-3px);box-shadow:0 14px 34px color-mix(in srgb,var(--acc) 18%,transparent)}
.card .i{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--acc) 30%,transparent),color-mix(in srgb,var(--acc2) 20%,transparent));color:var(--acc)}.card .i svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.card h4{margin:14px 0 5px;font-size:18px;font-weight:650}.card span{color:var(--mut);font-size:14px;line-height:1.45}
.alert{padding:12px 16px;border-radius:12px;margin-bottom:10px;font-size:14px;border:1px solid var(--line);background:var(--panel)}.alert.rouge{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--panel))}.alert.orange{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--panel))}.alert.info{border-color:var(--acc)}.alert.ok{border-color:var(--ok);color:var(--ok)}#alerts{margin-bottom:18px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:28px}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)}.tile small{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.8px;font-weight:600}.tile b{display:block;font-size:24px;margin:8px 0 9px;font-weight:700;letter-spacing:-.3px}
.bar{height:7px;background:var(--panel2);border-radius:5px;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--acc2));border-radius:5px;transition:width .5s}.bar i.w{background:var(--warn)}.bar i.b{background:var(--bad)}
.tabs{display:flex;gap:4px;margin:0 0 20px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{background:none;border:0;color:var(--mut);padding:11px 16px;font-size:15px;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;font-weight:500;white-space:nowrap}.tabs button:hover{color:var(--txt)}.tabs button.on{color:var(--txt);border-color:var(--acc)}
input,select,textarea{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:15px;font-family:inherit;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 25%,transparent)}
textarea{width:100%;min-height:150px;font-family:ui-monospace,Consolas,monospace;font-size:13px}
.btn{background:linear-gradient(135deg,var(--acc),var(--acc2));color:var(--on-acc);border:0;border-radius:11px;padding:10px 17px;font-size:14px;font-weight:650;cursor:pointer;text-decoration:none;display:inline-block;font-family:inherit;transition:filter .15s,transform .1s}.btn:hover{filter:brightness(1.1)}.btn:active{transform:scale(.97)}
.btn.s{background:transparent;color:var(--mut);border:1px solid var(--line);font-weight:550}.btn.s:hover{color:var(--txt);border-color:var(--acc);filter:none}.btn.s.on{color:var(--txt);border-color:var(--acc);background:color-mix(in srgb,var(--acc) 15%,transparent)}.btn.d:hover{color:var(--bad);border-color:var(--bad)}.btn:disabled{opacity:.5;cursor:default}
.chips{display:flex;gap:8px;overflow-x:auto;padding:10px 0 8px}.chip{flex:none;background:var(--panel);border:1px solid var(--line);color:var(--mut);padding:8px 15px;border-radius:999px;font-size:14px;cursor:pointer;white-space:nowrap;font-family:inherit}.chip:hover{color:var(--txt)}.chip b{color:var(--txt);margin-left:4px}.chip.on{background:var(--acc);border-color:var(--acc);color:var(--on-acc)}.chip.on b{color:var(--on-acc)}
.g{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.row{display:flex;gap:14px;overflow-x:auto;padding-bottom:8px}.row .app{flex:0 0 280px}
.app{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:11px;transition:border-color .15s,transform .15s}.app:hover{border-color:var(--acc);transform:translateY(-2px)}
.h{display:flex;gap:13px;align-items:center}.ic{width:52px;height:52px;border-radius:14px;background:var(--panel2);display:grid;place-items:center;flex:none;overflow:hidden}.ic img{width:38px;height:38px;object-fit:contain}.ic span{font-size:22px;font-weight:700;color:var(--mut)}
.h h4{margin:0;font-size:16px;line-height:1.2;word-break:break-word;font-weight:650}.tag{font-size:12px;color:var(--mut);margin-top:3px}.d{margin:0;font-size:13px;color:var(--mut);line-height:1.45;min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.f{display:flex;gap:8px;align-items:center;justify-content:space-between}.st{font-size:12px;color:var(--mut);display:flex;align-items:center;gap:6px}.dot{width:8px;height:8px;border-radius:50%;background:var(--mut);display:inline-block}.up{color:var(--ok)}.up .dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.err{color:var(--bad)}.btns{display:flex;gap:6px}
.spin{display:inline-block;width:12px;height:12px;border:2px solid color-mix(in srgb,var(--acc) 35%,transparent);border-top-color:var(--acc);border-radius:50%;animation:r 1s linear infinite}@keyframes r{to{transform:rotate(360deg)}}
table{width:100%;border-collapse:collapse;font-size:14px}th{color:var(--mut);font-weight:600;text-align:left;padding:10px 12px;cursor:pointer;white-space:nowrap;user-select:none;border-bottom:1px solid var(--line);font-size:12px;text-transform:uppercase;letter-spacing:.6px}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}tr:hover td{background:color-mix(in srgb,var(--acc) 6%,transparent)}
.tw{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}.nm{display:flex;align-items:center;gap:10px}.nm .ic{width:36px;height:36px;border-radius:10px}.nm .ic img{width:26px;height:26px}
.badge{font-size:12px;padding:4px 10px;border-radius:999px;background:var(--panel2);color:var(--mut);white-space:nowrap;font-weight:550}.badge.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.badge.w{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn)}.badge.b{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad)}
.disk{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:11px;box-shadow:var(--shadow)}.disk .top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.mut{color:var(--mut);font-size:13px}.more{display:block;margin:18px auto;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:12px;padding:12px 28px;font-size:15px;cursor:pointer;font-family:inherit}.more:hover{border-color:var(--acc)}
.rl{display:flex;flex-direction:column;gap:9px}.res{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:13px 16px;display:flex;gap:12px;align-items:center;justify-content:space-between}.res .t{min-width:0}.res b{word-break:break-all}
.warn{background:color-mix(in srgb,var(--warn) 13%,var(--panel));border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);color:var(--warn);border-radius:12px;padding:11px 15px;font-size:14px;margin:10px 0}
#login,#modal,#pwmodal{position:fixed;inset:0;background:rgba(5,8,16,.7);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:20;padding:16px}#pwmodal{display:flex;z-index:40}#login{background:var(--glow),var(--bg);backdrop-filter:none;overflow:auto}
.box{background:var(--panel);border:1px solid var(--line);padding:30px;border-radius:20px;width:min(440px,94vw);display:flex;flex-direction:column;gap:13px;max-height:92vh;overflow:auto;box-shadow:0 24px 70px rgba(0,0,0,.4)}.box h3{margin:0;font-size:22px}
.opt{display:flex;gap:11px;align-items:flex-start;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer}.opt:hover{border-color:var(--acc)}.opt input{width:18px;height:18px;margin-top:2px;accent-color:var(--acc)}.opt small{color:var(--mut)}.amf{display:flex;flex-direction:column;gap:9px}#d-ovh{display:flex;flex-direction:column;gap:9px}
#err,.err2{color:var(--bad);font-size:14px;min-height:18px}
#toast{position:fixed;bottom:92px;left:50%;transform:translateX(-50%);background:var(--acc);color:var(--on-acc);font-weight:600;padding:12px 20px;border-radius:12px;display:none;z-index:60;max-width:90vw;box-shadow:var(--shadow)}
.av{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--acc),var(--acc2));color:var(--on-acc);display:grid;place-items:center;font-weight:700;flex:none}
.ulist{display:flex;flex-direction:column;gap:10px}.urow{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 16px}.urow .un{flex:1;display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
table.mx th.sh{cursor:default;text-transform:none;letter-spacing:0;font-size:14px;color:var(--txt)}.shn{font-weight:650}.addr{background:none;border:0;padding:0;margin-top:3px;color:var(--mut);font:inherit;font-size:12px;font-weight:400;cursor:pointer;text-decoration:underline dotted}.addr:hover{color:var(--acc)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel2)}.seg button{background:none;border:0;color:var(--mut);padding:7px 12px;font:inherit;font-size:13px;font-weight:550;cursor:pointer;white-space:nowrap;border-right:1px solid var(--line)}.seg button:last-child{border-right:0}.seg button:hover{color:var(--txt)}.seg button.on.m-none{background:var(--line);color:var(--txt)}.seg button.on.m-r{background:color-mix(in srgb,var(--warn) 22%,transparent);color:var(--warn)}.seg button.on.m-rw{background:color-mix(in srgb,var(--ok) 22%,transparent);color:var(--ok)}
.hero{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:26px;padding:30px 30px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--acc) 20%,var(--panel)),color-mix(in srgb,var(--acc2) 12%,var(--panel)));box-shadow:var(--shadow)}
.hero .hi{color:var(--acc);font-weight:650;font-size:14px;text-transform:uppercase;letter-spacing:1.4px;margin-bottom:6px}.hero h2{font-size:34px}
.pill{display:inline-flex;align-items:center;gap:9px;padding:9px 16px;border-radius:999px;font-size:14px;font-weight:600;background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok);border:1px solid color-mix(in srgb,var(--ok) 40%,transparent)}.pill i{width:9px;height:9px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.pill.orange{background:color-mix(in srgb,var(--warn) 16%,transparent);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.pill.rouge{background:color-mix(in srgb,var(--bad) 16%,transparent);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,transparent)}
.gauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.gc{display:flex;align-items:center;gap:18px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;box-shadow:var(--shadow)}
.ring{--p:0;width:88px;height:88px;border-radius:50%;flex:none;background:conic-gradient(var(--acc) calc(var(--p)*1%),var(--panel2) 0);display:grid;place-items:center}.ring.w{background:conic-gradient(var(--warn) calc(var(--p)*1%),var(--panel2) 0)}.ring.b{background:conic-gradient(var(--bad) calc(var(--p)*1%),var(--panel2) 0)}.ring .rc{width:68px;height:68px;border-radius:50%;background:var(--panel);display:grid;place-items:center}.ring .rc b{font-size:18px}
.gt{display:flex;flex-direction:column;gap:3px;min-width:0}.gt b{font-size:16px}.gt span{color:var(--mut);font-size:13px}
.cards>button.card{padding:22px}
.lg{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(340px,470px);width:min(1040px,96vw);border-radius:26px;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 90px rgba(0,0,0,.45);background:var(--panel);margin:auto}
.lgb{padding:48px 44px;background:linear-gradient(150deg,color-mix(in srgb,var(--acc) 55%,#000),color-mix(in srgb,var(--acc2) 60%,#000));color:#fff;display:flex;flex-direction:column;gap:22px;justify-content:center;position:relative;overflow:hidden}
.lgb::after{content:"";position:absolute;width:380px;height:380px;border-radius:50%;right:-140px;bottom:-140px;background:rgba(255,255,255,.08)}
.lgb .lo{display:flex;align-items:center;gap:12px;font-size:26px;font-weight:750}.lgb .logo{width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.2);display:grid;place-items:center;font-weight:800;font-size:24px}
.lgb h1{margin:8px 0 0;font-size:34px;line-height:1.15;letter-spacing:-.6px}.lgb p{margin:0;opacity:.85;font-size:16px;line-height:1.5}
.lgb ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}.lgb li{display:flex;align-items:center;gap:12px;font-size:15px}.lgb li svg{width:36px;height:36px;padding:8px;border-radius:11px;background:rgba(255,255,255,.16);fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.lg .box{width:100%;max-width:none;border:0;border-radius:0;box-shadow:none;padding:44px 40px;justify-content:center;max-height:none}
@media(max-width:820px){.lg{grid-template-columns:1fr}.lgb{padding:26px 24px}.lgb ul,.lgb p{display:none}.lgb h1{font-size:24px}.lg .box{padding:28px 22px}.hero{padding:22px}.hero h2{font-size:27px}}
/* ---- passe « premium » : fond animé, verre, grille bento, courbes, recherche ---- */
html{background:var(--bg)}body{background:none}
body::before{content:"";position:fixed;inset:-25%;z-index:-1;pointer-events:none;background:radial-gradient(38% 38% at 18% 22%,color-mix(in srgb,var(--acc) 24%,transparent),transparent 70%),radial-gradient(34% 34% at 82% 28%,color-mix(in srgb,var(--acc2) 20%,transparent),transparent 70%),radial-gradient(40% 40% at 58% 92%,color-mix(in srgb,var(--acc) 13%,transparent),transparent 70%);animation:drift 28s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate3d(5%,4%,0) scale(1.1)}}
.card,.tile,.gc,.disk,.app,.tw,.urow,.res{background:color-mix(in srgb,var(--panel) 68%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),var(--shadow)}
:root[data-theme=clair] .card,:root[data-theme=clair] .tile,:root[data-theme=clair] .disk,:root[data-theme=clair] .app,:root[data-theme=clair] .tw{background:color-mix(in srgb,#fff 78%,transparent)}
h2{background:linear-gradient(180deg,var(--txt),color-mix(in srgb,var(--txt) 70%,var(--acc)));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
nav button{position:relative}nav button.on::before{content:"";position:absolute;left:-12px;top:22%;bottom:22%;width:4px;border-radius:0 4px 4px 0;background:linear-gradient(var(--acc),var(--acc2));box-shadow:0 0 14px var(--acc)}
nav .srch{border:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 70%,transparent);margin-bottom:12px;color:var(--mut)}nav .srch kbd{margin-left:auto;font:inherit;font-size:11px;padding:2px 6px;border-radius:6px;border:1px solid var(--line);color:var(--mut)}
#home.anim .bento>*,#home.anim .tiles>*,.page.on .hero{animation:up .5s cubic-bezier(.2,.7,.2,1) both}.bento>*:nth-child(2),.tiles>*:nth-child(2){animation-delay:.05s!important}.bento>*:nth-child(3),.tiles>*:nth-child(3){animation-delay:.1s!important}.bento>*:nth-child(4),.tiles>*:nth-child(4){animation-delay:.15s!important}.tiles>*:nth-child(n+5){animation-delay:.2s!important}
@keyframes up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero{align-items:center;padding:34px 36px;background:linear-gradient(120deg,color-mix(in srgb,var(--acc) 34%,var(--panel)),color-mix(in srgb,var(--acc2) 22%,var(--panel)) 60%,var(--panel));position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;width:340px;height:340px;border-radius:50%;right:-90px;top:-150px;background:radial-gradient(circle,color-mix(in srgb,var(--acc2) 45%,transparent),transparent 70%);pointer-events:none}
.hero .hr{display:flex;flex-direction:column;align-items:flex-end;gap:8px;position:relative;z-index:1}.clock{font-size:60px;font-weight:700;letter-spacing:-2.5px;line-height:1;font-variant-numeric:tabular-nums}.dt{color:var(--mut);font-size:15px;text-transform:capitalize}
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;margin-bottom:16px}.b4{grid-column:span 4}.b3{grid-column:span 3}.b12{grid-column:span 12}
@media(max-width:1000px){.b3,.b4{grid-column:span 6}}@media(max-width:640px){.b3,.b4{grid-column:1/-1}.clock{font-size:44px}.hero .hr{align-items:flex-start}}
.mc{border-radius:var(--r);border:1px solid var(--line);padding:20px 22px 0;overflow:hidden;display:flex;flex-direction:column;min-height:190px}
.mc small{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:1px;font-weight:600}.mc .big{font-size:46px;font-weight:700;letter-spacing:-2px;margin:6px 0 2px;font-variant-numeric:tabular-nums;line-height:1.05}.mc .big em{font-style:normal;font-size:22px;color:var(--mut);letter-spacing:0;margin-left:2px}.mc .sb{color:var(--mut);font-size:13px}
.mc svg.sp{margin:auto -22px 0;width:calc(100% + 44px);height:64px;display:block}.mc.w .big{color:var(--warn)}.mc.b .big{color:var(--bad)}
.mod{--c:var(--acc);text-align:left;border:1px solid color-mix(in srgb,var(--c) 30%,var(--line));border-radius:20px;padding:22px;cursor:pointer;color:var(--txt);font:inherit;display:flex;flex-direction:column;gap:6px;min-height:170px;position:relative;overflow:hidden;background:linear-gradient(160deg,color-mix(in srgb,var(--c) 26%,var(--panel)),color-mix(in srgb,var(--panel) 80%,transparent) 72%);box-shadow:inset 0 1px 0 rgba(255,255,255,.07),var(--shadow);transition:transform .2s,box-shadow .2s,border-color .2s}
.mod:hover{transform:translateY(-4px);border-color:var(--c);box-shadow:0 18px 44px color-mix(in srgb,var(--c) 26%,transparent)}
.mod .i{width:50px;height:50px;border-radius:15px;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 22%,transparent);color:var(--c);margin-bottom:10px}.mod .i svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mod h4{margin:0;font-size:20px;font-weight:700}.mod span{color:var(--mut);font-size:13.5px;line-height:1.4}.mod em{font-style:normal;font-weight:650;font-size:14px;color:var(--c);margin-top:auto;padding-top:10px}
.mod::after{content:"→";position:absolute;right:20px;top:20px;color:var(--c);opacity:0;transform:translateX(-6px);transition:.2s;font-size:20px}.mod:hover::after{opacity:1;transform:none}
.k1{--c:var(--c-maison,#ffb454)}.k2{--c:#a78bfa}.k3{--c:#38bdf8}.k4{--c:#34d399}
#pal{position:fixed;inset:0;background:rgba(4,7,14,.6);backdrop-filter:blur(8px);display:none;align-items:flex-start;justify-content:center;padding-top:14vh;z-index:40}#pal.on{display:flex}
.pbox{width:min(560px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:0 30px 90px rgba(0,0,0,.5);overflow:hidden}.pbox input{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:18px 20px;font-size:17px;background:transparent}.pbox input:focus{box-shadow:none}
#pl{max-height:50vh;overflow:auto;padding:8px}.pi{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;cursor:pointer;color:var(--txt);font-size:15px}.pi svg{width:19px;height:19px;fill:none;stroke:var(--mut);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.pi.on{background:color-mix(in srgb,var(--acc) 18%,transparent)}.pi.on svg{stroke:var(--acc)}.pi small{margin-left:auto;color:var(--mut)}
.tabs .cnt{margin-left:8px;font-size:12px;padding:1px 8px;border-radius:999px;background:var(--panel2);color:var(--mut)}.tabs button.on .cnt{background:color-mix(in srgb,var(--acc) 25%,transparent);color:var(--txt)}
.dg{margin-bottom:26px}.dgh{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}.dgh b{font-size:16px}.dl{display:flex;flex-direction:column;gap:10px}
.dr{--c:var(--acc);display:flex;align-items:center;gap:16px;padding:14px 18px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--panel) 68%,transparent);backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),var(--shadow);transition:border-color .15s}.dr:hover{border-color:color-mix(in srgb,var(--c) 55%,var(--line))}
.dic{width:48px;height:48px;border-radius:14px;flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--c) 18%,transparent);color:var(--c)}.dic svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dm{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.dn{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dn b{font-size:16px}.du{display:flex;align-items:center;gap:12px}.du .bar{flex:1;max-width:340px}.dp{font-size:12px}
.da{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none}
@media(max-width:760px){nav button.on::before{display:none}}
@media(max-width:700px){.dr{flex-wrap:wrap}.da{flex-direction:row;align-items:center;width:100%;justify-content:space-between}}
.themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.th{border:2px solid var(--line);border-radius:14px;padding:0;background:none;cursor:pointer;overflow:hidden;color:var(--txt);font:inherit;font-size:13px;font-weight:600;text-align:center}.th:hover{border-color:var(--mut)}.th.on{border-color:var(--acc)}.th .sw{height:54px;display:flex;align-items:flex-end;gap:5px;padding:8px}.th .sw i{flex:1;height:100%;border-radius:6px}.th span{display:block;padding:8px 6px;background:var(--panel2)}
@media(max-width:760px){body{flex-direction:column-reverse}nav{width:100%;flex-direction:row;overflow-x:auto;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--line);gap:2px;justify-content:space-around}nav .brand,nav .sp,nav .sm{display:none}nav button{flex-direction:column;gap:3px;padding:7px 9px;font-size:11px;border-radius:10px;min-width:58px;align-items:center;text-align:center}nav button svg{width:22px;height:22px}.wrap{padding:22px 16px 40px}h2{font-size:25px}}
.shellbox{width:min(900px,96vw);height:min(600px,80vh);padding:0;overflow:hidden}.shellbox .term-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.term-wrap{flex:1;background:#0a0e16;padding:8px}
/* Jeux : cartes de serveurs, catalogue, paramètres */
input[type=range]{padding:0;border:0;background:none;accent-color:var(--acc);height:26px;width:100%;box-shadow:none}
.gg{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.gg.gt{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.gc2{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow)}.gwrap{position:relative}.gwrap .pl{position:absolute;top:10px;left:10px}.gwrap .pl .badge{backdrop-filter:blur(8px);background:rgba(8,12,22,.72);color:#fff}.gwrap .pl .badge.ok{color:#5be3a0}.gwrap .pl .badge.w{color:#ffc56b}
.gimg{position:relative;height:130px;display:grid;place-items:center;overflow:hidden}.gimg.sm{height:52px}.gimg span{font-size:44px;font-weight:800;color:rgba(255,255,255,.85)}.gimg.sm span{font-size:22px}.gimg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gc2 .gb{padding:14px 16px;display:flex;flex-direction:column;gap:10px}.gc2 .btns{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gc2 .btns .btn{padding:9px 4px;font-size:13px;text-align:center;justify-content:center}.gc2 .btns .pp{grid-column:1/-1}.addr{display:flex;gap:8px;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:6px 6px 6px 12px;font-family:ui-monospace,Consolas,monospace;font-size:13px;overflow:hidden}.addr span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.addr .btn{margin-left:auto;padding:5px 11px;font-size:12px}
.gtile{cursor:pointer;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel);padding:0;text-align:left;color:var(--txt);font:inherit;transition:transform .15s,border-color .15s,box-shadow .15s}.gtile:hover{transform:translateY(-3px);border-color:var(--acc);box-shadow:0 12px 30px color-mix(in srgb,var(--acc) 18%,transparent)}.gtile .gimg{height:110px}.gtile b{display:block;padding:11px 13px;font-size:15px}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.vf{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.vf b{font-size:14px}.vf small{color:var(--mut);white-space:pre-line;line-height:1.45}.vf input:not([type=checkbox]),.vf select{width:100%}
.sw{position:relative;display:inline-block;width:42px;height:24px;flex:none}.sw input{opacity:0;width:0;height:0}.sw i{position:absolute;inset:0;background:var(--panel2);border:1px solid var(--line);border-radius:999px;cursor:pointer;transition:.15s}.sw i:before{content:"";position:absolute;width:18px;height:18px;left:2px;top:2px;border-radius:50%;background:var(--mut);transition:.15s}.sw input:checked+i{background:color-mix(in srgb,var(--acc) 35%,transparent);border-color:var(--acc)}.sw input:checked+i:before{transform:translateX(18px);background:var(--acc)}
/* menu de la personne connectée (bas de la barre latérale) et gestion des personnes */
nav .usr{width:100%;border:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 70%,transparent);padding:8px 10px;margin-top:8px}nav .usr .av{width:30px;height:30px;font-size:14px}nav .usr #uname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--txt);font-size:14px}nav .usr .chev{width:16px;height:16px;margin-left:auto;transition:transform .15s}nav .usr.open .chev{transform:rotate(180deg)}
#upop{position:fixed;z-index:60;display:none;min-width:236px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:0 18px 50px rgba(0,0,0,.45);flex-direction:column;gap:2px}#upop.on{display:flex}
#upop .uhd{padding:8px 12px 10px;border-bottom:1px solid var(--line);margin-bottom:6px;display:flex;flex-direction:column;gap:2px}#upop hr{border:0;border-top:1px solid var(--line);margin:6px 0;width:100%}
#upop button{background:none;border:0;color:var(--txt);text-align:left;padding:10px 12px;border-radius:10px;font:inherit;font-size:14px;cursor:pointer;display:flex;gap:11px;align-items:center}#upop button:hover{background:color-mix(in srgb,var(--acc) 12%,transparent)}#upop button.d{color:var(--bad)}#upop svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:760px){nav .usr{width:auto;min-width:58px;border:0;background:none;margin:0;flex-direction:column;gap:3px;padding:7px 9px;font-size:11px;border-radius:10px;align-items:center}nav .usr #uname,nav .usr .chev{display:none}nav .sp{display:none}}
.pr{align-items:flex-start}.pr .un2{flex:1;min-width:0}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.pmeta{color:var(--mut);font-size:13px;margin-top:6px;line-height:1.5}
.kinds{display:flex;flex-direction:column;gap:8px}.opt.on{border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}.opt b{display:block;margin-bottom:2px}.subopts{margin:2px 0 0 4px;padding:4px 0 2px 14px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:2px}.subopts label{display:flex;gap:10px;align-items:flex-start;padding:6px 0;cursor:pointer;font-weight:400}.subopts input{width:18px;height:18px;margin-top:2px;accent-color:var(--acc)}.subopts small{color:var(--mut);display:block}
#mf.wide{width:min(560px,94vw)}.frow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:5px 0;flex-wrap:wrap}.frow b{font-weight:550}
/* curseurs et catégories repliables de la page Jeux (réglages des serveurs) */
.vr{display:flex;align-items:center;gap:12px}.vr input[type=range]{flex:1}.vr b.vn{min-width:64px;text-align:right;font-variant-numeric:tabular-nums}
.vcat{margin:0 0 14px}.vcat>summary{cursor:pointer;font-weight:600;padding:8px 0;list-style:none}.vcat>summary::before{content:"▸ ";color:var(--mut)}.vcat[open]>summary::before{content:"▾ "}
/* jauges « vase » de l'accueil : le niveau monte en douceur, avec une surface qui ondule (liquide) */
.mc.vase{position:relative}
.mc.vase>*:not(.liq){position:relative;z-index:1}
.mc.vase svg.sp{display:none}
.mc.vase .liq{position:absolute;left:0;right:0;bottom:0;height:var(--p,0%);transition:height 1.8s cubic-bezier(.2,.8,.2,1);pointer-events:none;z-index:0;--lc:var(--acc)}
.mc.vase.w .liq{--lc:var(--warn)}.mc.vase.b .liq{--lc:var(--bad)}
.liq>i{position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--lc) 40%,transparent),color-mix(in srgb,var(--lc) 14%,transparent));transition:background .8s}
.liq>svg.w{position:absolute;left:0;top:-14px;width:200%;height:16px;fill:color-mix(in srgb,var(--lc) 40%,transparent);animation:liqw 7s linear infinite}
.liq>svg.w.b2{top:-10px;fill:color-mix(in srgb,var(--lc) 24%,transparent);animation-duration:11s;animation-direction:reverse}
@keyframes liqw{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.liq>svg.w{animation:none}}
.tabs.sub{margin:0 0 14px;border-bottom:0;gap:6px}.tabs.sub button{font-size:13px;padding:6px 14px;border:1px solid var(--line);border-radius:999px;background:transparent}.tabs.sub button.on{background:color-mix(in srgb,var(--acc) 22%,transparent);color:var(--txt);border-color:var(--acc)}

/* Modules absents (docs/COHERENCE.md) : HalvorMods.set() pose « no-mod-<id> » sur <body> ; tout élément marqué data-mod="<id>" (ou lié à l'assistant vocal) disparaît. */
body.no-mod-home [data-mod~="home"],body.no-mod-games [data-mod~="games"],body.no-mod-vm [data-mod~="vm"],body.no-mod-ia [data-mod~="ia"],body.no-mod-media [data-mod~="media"],body.no-mod-apps [data-mod~="apps"],body.no-mod-nas [data-mod~="nas"],
body.no-mod-ia #halvorhello,body.no-mod-ia #orb,body.no-mod-ia #holo .holo-b{display:none!important}
/* Fenêtres (anciennes #modal / #pwmodal et nouvelles .ui-overlay) : TOUJOURS au-dessus de la barre du bas (z 30), de la bulle vocale (60) et des bulles
   de réglage ; hauteur utile du téléphone (dvh : sans les barres du navigateur). Sur téléphone la fenêtre devient une feuille qui monte du bas,
   défile dedans, avec un bouton « × » assez grand pour le doigt et toujours visible. */
#modal,body .ui-overlay{z-index:90}#pwmodal{z-index:100}
body .ui-modal{max-height:calc(100dvh - 32px)}.box{max-height:calc(100dvh - 32px)}
body:has(.ui-overlay),body:has(#modal[style*="flex"]){overflow:hidden}
@media(max-width:760px){
 #modal,#pwmodal,body .ui-overlay{align-items:flex-end;padding:8px}
 body .ui-modal,#modal .box,#pwmodal .box{width:100%;max-height:calc(100dvh - 16px);padding:16px;border-radius:18px;overflow-y:auto;overscroll-behavior:contain;padding-bottom:max(16px,env(safe-area-inset-bottom))}
 body .ui-modal-head{position:sticky;top:-16px;z-index:2;background:var(--panel);padding:8px 0;margin-top:-8px}
 body .ui-x{font-size:32px;min-width:44px;min-height:44px}
 #hcust,#wppanel{z-index:95;max-height:calc(100dvh - 110px)}
 #orb{width:64px!important;height:64px!important;right:10px!important;bottom:84px!important}#orb canvas{width:64px!important;height:64px!important}
}
/* Panneau « Personnaliser l'accueil » : titre avec « × » et boutons du bas toujours visibles, même quand la liste défile */
#hcust>h4{position:sticky;top:-18px;z-index:2;display:flex;justify-content:space-between;align-items:center;margin:-18px -18px 8px;padding:14px 18px 8px;background:var(--solid,var(--panel))}
#hcust .hx-close{background:none;border:0;color:var(--mut);font-size:30px;line-height:1;min-width:44px;min-height:44px;cursor:pointer}
#hcust .hbtns{position:sticky;bottom:-18px;z-index:2;margin:8px -18px -18px;padding:10px 18px;background:var(--solid,var(--panel))}
/* Téléphone : le logo « H » est la SEULE entrée de la page Machine (hologramme plein écran) ; il restait caché avec le nom. On le garde, seul, en tête de la barre. */
@media(max-width:760px){body nav .brand{display:flex;align-items:center;justify-content:center;flex:none;min-width:48px;font-size:0;gap:0;padding:0 4px}body nav .brand .logo{font-size:18px}}

/* Accueil > Maison (proposition 2026-11-02, assets/maison_home.js) */
#maisonbox:empty{display:none}
.mz{margin-bottom:18px}
.mz .mzh{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.mz h3{margin:0;font-size:16px}
.mz .mzh a{color:var(--acc);font-size:13px;cursor:pointer;text-decoration:none}
.mz .mztag{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--mut);margin-left:8px;vertical-align:middle}
.mz-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:12px}
.mz-tile{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.mz-tile b{font-size:20px;font-weight:600}.mz-tile span{font-size:12.5px;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mz-tile.warn{border-color:var(--warn)}.mz-tile.warn b{color:var(--warn)}
.mz-ctls{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:12px}
.mz-ctl{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:9px 12px;border-radius:12px;border:1px solid var(--line);background:transparent;color:var(--txt);font:inherit;text-align:left;cursor:pointer}
.mz-ctl span{font-size:14px;font-weight:600}.mz-ctl small{font-size:12px;color:var(--mut)}
.mz-ctl.on{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc) inset}.mz-ctl:disabled{opacity:.6;cursor:progress}
.mz .mznote{margin:12px 0 0;font-size:12.5px;color:var(--mut)}
