:root{--bg: #f3f4f6;--surface: #ffffff;--surface-2: #f8f9fb;--surface-3: #f1f5f9;--input-bg: #ffffff;--ink: #111827;--ink-2: #374151;--muted: #6b7280;--line: #e5e7eb;--line-strong: #d1d5db;--side: #0f172a;--side-ink: #cbd5e1;--side-muted: #94a3b8;--brand: #2563eb;--link: var(--brand);--on-status: #ffffff;--brand-ink: #ffffff;--brand-soft: color-mix(in srgb, var(--brand) 11%, var(--surface));--brand-strong: color-mix(in srgb, var(--brand) 70%, #000);--ok: #15803d;--ok-soft: #dcfce7;--warn: #b45309;--warn-soft: #fef3c7;--bad: #b91c1c;--bad-soft: #fee2e2;--in: #16a34a;--out: #ea580c;--radius: 10px;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);--font: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif;color-scheme:light}@supports not (color: color-mix(in srgb,red,red)){:root{--brand-soft: #e8efff;--brand-strong: #1e40af;--link: #2563eb}:root[data-theme=dark]{--brand-soft: #1e2b4a;--brand-strong: #93c5fd;--link: #93c5fd}}:root[data-theme=dark]{--bg: #0b1120;--surface: #121a2b;--surface-2: #172135;--surface-3: #1d2940;--input-bg: #0f1726;--ink: #e5e7eb;--ink-2: #cbd5e1;--muted: #94a3b8;--line: #263248;--line-strong: #36445f;--side: #070c17;--side-ink: #cbd5e1;--brand-ink: #0b1120;--link: color-mix(in srgb, var(--brand) 72%, #fff);--on-status: #0b1120;--brand-soft: color-mix(in srgb, var(--brand) 22%, var(--surface));--brand-strong: color-mix(in srgb, var(--brand) 55%, #fff);--ok: #4ade80;--ok-soft: rgba(34, 197, 94, .16);--warn: #fbbf24;--warn-soft: rgba(245, 158, 11, .16);--bad: #f87171;--bad-soft: rgba(239, 68, 68, .16);--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .3);color-scheme:dark}:root[data-theme=contrast]{--bg: #ffffff;--surface: #ffffff;--surface-2: #ffffff;--surface-3: #eeeeee;--input-bg: #ffffff;--ink: #000000;--ink-2: #000000;--muted: #333333;--line: #000000;--line-strong: #000000;--side: #000000;--side-ink: #ffffff;--side-muted: #ffffff;--brand-soft: color-mix(in srgb, var(--brand) 16%, #fff);--brand-strong: color-mix(in srgb, var(--brand) 60%, #000);--ok: #006b1f;--warn: #7a3d00;--bad: #9b0000;--shadow: none;color-scheme:light}:root[data-theme=contrast] a{text-decoration:underline}:root[data-theme=contrast] :focus-visible{outline:3px solid #000;outline-offset:2px}:root[data-accent=green]{--brand: #15803d}:root[data-accent=violet]{--brand: #7c3aed}:root[data-accent=orange]{--brand: #c2410c}:root[data-accent=red]{--brand: #be123c}:root[data-accent=teal]{--brand: #0f766e}:root[data-accent=slate]{--brand: #475569}:root[data-theme=dark][data-accent=green]{--brand: #22c55e}:root[data-theme=dark][data-accent=violet]{--brand: #8b5cf6}:root[data-theme=dark][data-accent=orange]{--brand: #f97316}:root[data-theme=dark][data-accent=red]{--brand: #f43f5e}:root[data-theme=dark][data-accent=teal]{--brand: #14b8a6}:root[data-theme=dark][data-accent=slate]{--brand: #94a3b8}:root[data-theme=dark]{--brand: #3b82f6}:root[data-theme=dark] img.tuto-img-src,:root[data-theme=dark] .tuto-img img{filter:brightness(.92)}.theme-swatches{display:flex;gap:.45rem;flex-wrap:wrap}.theme-swatches label{position:relative;cursor:pointer}.theme-swatches input{position:absolute;opacity:0}.theme-swatches span{display:block;width:30px;height:30px;border-radius:50%;border:3px solid var(--surface);box-shadow:0 0 0 1px var(--line-strong)}.theme-swatches input:checked+span{box-shadow:0 0 0 2px var(--ink)}.theme-swatches input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}*{box-sizing:border-box}svg{width:18px;height:18px;vertical-align:-3px;flex:none}html,body{margin:0;height:100%}body{font:15px/1.5 var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.25;margin:0 0 .5rem}h1{font-size:1.45rem;font-weight:700;letter-spacing:-.01em}h2{font-size:1.1rem;font-weight:650}h3{font-size:.95rem;font-weight:650}p{margin:0 0 .75rem}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.num,time,.mono{font-variant-numeric:tabular-nums}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.muted{color:var(--muted)}.small{font-size:.85rem}.hidden{display:none!important}.right{text-align:right}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.stack>*+*{margin-top:1rem}.grow{flex:1}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.side{background:var(--side);color:var(--side-ink);padding:1.1rem .75rem;display:flex;flex-direction:column;gap:.25rem;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:.6rem;padding:.25rem .6rem 1rem;color:#fff;font-weight:700;font-size:1.05rem}.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);display:grid;place-items:center;font-size:.9rem}.brand small{display:block;font-weight:500;color:#94a3b8;font-size:.75rem}.nav-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--side-muted);padding:.9rem .6rem .3rem}.nav a{display:flex;align-items:center;gap:.65rem;padding:.5rem .6rem;border-radius:8px;color:var(--side-ink);font-weight:500}.nav a:hover{background:#ffffff0f;text-decoration:none;color:#fff}.nav a.active{background:color-mix(in srgb,var(--brand) 26%,transparent);color:#fff}.nav svg{width:18px;height:18px;flex:none;opacity:.9}.nav .badge-count{margin-left:auto;background:var(--out);color:#fff;border-radius:99px;font-size:.72rem;padding:0 .45rem}.side-foot{margin-top:auto;padding:.75rem .6rem 0;border-top:1px solid rgba(255,255,255,.08);font-size:.85rem}.side-foot .who{color:#fff;font-weight:600}.side-foot button{background:none;border:0;color:#94a3b8;padding:0;cursor:pointer;font:inherit}.side-foot button:hover{color:#fff}.main{min-width:0}.topbar{display:none}.content{padding:1.75rem 2rem 3rem;max-width:1200px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}.page-head p{margin:0;color:var(--muted)}.banner{padding:.6rem 2rem;font-size:.9rem;display:flex;gap:.75rem;align-items:center}.banner.trial{background:var(--brand-soft);color:var(--brand-strong)}.banner.problem{background:var(--bad-soft);color:var(--bad)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.25rem}.card>h2:first-child,.card>h3:first-child{margin-bottom:.75rem}.card.flush{padding:0;overflow:hidden}.card.flush>h2:first-child{padding:1rem 1.25rem 0}.grid{display:grid;gap:1rem}.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.main-side{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:.5rem .9rem;font:600 .9rem var(--font);cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.primary:hover{background:color-mix(in srgb,var(--brand) 85%,var(--ink));border-color:color-mix(in srgb,var(--brand) 85%,var(--ink))}.btn.danger{color:var(--bad)}.btn.danger.solid{background:var(--bad);border-color:var(--bad);color:var(--on-status)}.btn.ok.solid{background:var(--ok);border-color:var(--ok);color:var(--on-status)}.btn.ghost{border-color:transparent;background:transparent}.btn.small{padding:.3rem .6rem;font-size:.82rem}.btn svg{width:16px;height:16px}.punch{width:100%;border:0;border-radius:14px;padding:1.4rem 1rem;color:#fff;font:700 1.3rem var(--font);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.2rem;box-shadow:0 6px 16px #0000001f;transition:transform .08s}.punch:active{transform:scale(.98)}.punch.in{background:linear-gradient(135deg,#22c55e,#15803d)}.punch.out{background:linear-gradient(135deg,#fb923c,#c2410c)}.punch small{font-weight:500;font-size:.85rem;opacity:.9}.stat{display:flex;flex-direction:column;gap:.15rem}.stat .label{color:var(--muted);font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.stat .value{font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums}.stat .sub{color:var(--muted);font-size:.85rem}.progress{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin-top:.4rem}.progress>div{height:100%;background:var(--brand);border-radius:99px}table{width:100%;border-collapse:collapse;font-size:.9rem}th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;padding:.6rem .75rem;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}td{padding:.6rem .75rem;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:0}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface-2)}.table-wrap{overflow-x:auto}.empty{padding:2rem 1rem;text-align:center;color:var(--muted)}.pill{display:inline-flex;align-items:center;gap:.35rem;padding:.1rem .55rem;border-radius:99px;font-size:.78rem;font-weight:600;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}.pill.ok{background:var(--ok-soft);color:var(--ok);border-color:transparent}.pill.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.pill.bad{background:var(--bad-soft);color:var(--bad);border-color:transparent}.pill.info{background:var(--brand-soft);color:var(--brand-strong);border-color:transparent}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.avatar{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;font-size:.78rem;font-weight:700;color:#fff;flex:none}.person{display:flex;align-items:center;gap:.6rem}.person .sub{color:var(--muted);font-size:.8rem}label.field,div.field{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;color:var(--ink-2)}label.field .hint,div.field .hint{font-weight:400;color:var(--muted);font-size:.8rem}input,select,textarea{font:inherit;color:var(--ink);background:var(--input-bg);border:1px solid var(--line-strong);border-radius:8px;padding:.5rem .65rem;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--brand) 30%,transparent);border-color:var(--brand)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-3);color:var(--muted);cursor:not-allowed}input[type=checkbox]{width:auto}input[type=color]{height:40px;padding:4px;cursor:pointer}label.check{display:flex;gap:.5rem;align-items:center;font-size:.9rem;font-weight:500}textarea{min-height:80px;resize:vertical}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1rem}.form-grid .full{grid-column:1 / -1}.toolbar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.toolbar input,.toolbar select{width:auto}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--surface)}.seg button{border:0;background:none;padding:.45rem .8rem;font:600 .85rem var(--font);color:var(--muted);cursor:pointer}.seg button.on{background:var(--brand-soft);color:var(--brand-strong)}.modal-back{position:fixed;inset:0;background:#0f172a73;display:grid;place-items:center;padding:1rem;z-index:50;animation:fade .12s}.modal{background:var(--surface);border-radius:14px;width:min(640px,100%);max-height:calc(100vh - 2rem);overflow-y:auto;box-shadow:0 20px 50px #00000040}.modal.wide{width:min(860px,100%)}.modal header{padding:1.1rem 1.4rem .4rem;display:flex;justify-content:space-between;align-items:center}.modal header h2{margin:0}.modal .body{padding:.6rem 1.4rem 1.2rem}.modal footer{padding:.9rem 1.4rem;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:.5rem;background:var(--surface-2);border-radius:0 0 14px 14px}@keyframes fade{0%{opacity:0}}.toasts{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:60}.toast{background:#111827;color:#fff;padding:.7rem 1rem;border-radius:10px;box-shadow:0 8px 20px #0003;max-width:380px;font-size:.9rem;animation:fade .15s}.toast.error{background:var(--bad);color:var(--on-status)}.toast.ok{background:var(--ok);color:var(--on-status)}.callout{border-radius:10px;padding:.8rem 1rem;background:var(--surface-2);border:1px solid var(--line);font-size:.9rem}.callout.info{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,var(--surface));color:var(--brand-strong)}.callout.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,var(--surface));color:color-mix(in srgb,var(--warn) 70%,var(--ink))}.callout.bad{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 35%,var(--surface));color:color-mix(in srgb,var(--bad) 70%,var(--ink))}.thread{display:flex;flex-direction:column;gap:.5rem;max-height:320px;overflow-y:auto}.thread .msg{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:.55rem .75rem;max-width:85%}.thread .msg.mine{align-self:flex-end;background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,var(--surface))}.thread .msg .who{font-weight:600;font-size:.85rem}.secret{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.05rem;background:#0f172a;color:#e2e8f0;padding:.7rem 1rem;border-radius:8px;word-break:break-all;user-select:all}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.cal .dow{font-size:.72rem;text-transform:uppercase;color:var(--muted);font-weight:650;padding:.4rem .5rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface-2)}.cal .day{min-height:104px;padding:.3rem .35rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;gap:2px;overflow:hidden}.cal .day.other{background:var(--surface-2);color:#9ca3af}.cal .day.weekend{background:var(--surface-2)}.cal .day.today .n{background:var(--brand);color:var(--brand-ink);border-radius:99px;padding:0 .4rem}.cal .n{font-size:.8rem;font-weight:650;align-self:flex-start}.cal .ev{font-size:.72rem;padding:1px 5px;border-radius:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal .ev.pending{opacity:.6;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.25) 0 4px,transparent 4px 8px)}.cal .ev.holiday{background:var(--line);color:var(--ink-2)}.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth .art{background:radial-gradient(1200px 600px at 10% 10%,#1e3a8a,#0f172a);color:#e2e8f0;padding:3rem;display:flex;flex-direction:column;justify-content:space-between}.auth .art h1{font-size:2rem;color:#fff;max-width:420px}.auth .art ul{padding-left:1.1rem;color:#cbd5e1}.auth .panel{display:grid;place-items:center;padding:2rem}.auth form{width:min(380px,100%)}.qr-card{width:85.6mm;height:54mm;border:1px solid #cbd5e1;border-radius:3mm;padding:4mm;display:flex;gap:4mm;align-items:center;background:#fff;color:#111827;margin:0 auto}.qr-card svg,.qr-card img{width:38mm;height:38mm}.qr-card .who{font-weight:700;font-size:11pt}.qr-card .co{font-size:8pt;color:#475569}@media print{body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{position:absolute;left:0;top:0;width:100%}}@media(max-width:900px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0 30% 0 0;z-index:40;transform:translate(-105%);transition:transform .18s;height:100%}.side.open{transform:none;box-shadow:0 0 0 100vmax #00000059}.topbar{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;background:var(--side);color:#fff;position:sticky;top:0;z-index:30;font-weight:700}.topbar button{background:none;border:0;color:#fff;padding:.2rem;cursor:pointer}.content{padding:1.1rem 1rem 3rem}.banner{padding:.6rem 1rem}.grid.c2,.grid.c3,.grid.main-side{grid-template-columns:1fr}.grid.c2.keep,.grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid,.auth{grid-template-columns:1fr}.auth .art{display:none}.cal .day{min-height:64px}.cal .ev{font-size:.62rem}}.help{display:grid;grid-template-columns:230px minmax(0,1fr);gap:1rem;align-items:start}.help-toc{position:sticky;top:1rem;display:flex;flex-direction:column;padding:.6rem;max-height:calc(100vh - 2rem);overflow-y:auto}.help-toc a{padding:.35rem .55rem;border-radius:6px;color:var(--ink-2);font-size:.88rem}.help-toc a.sub{padding-left:1.3rem;font-size:.82rem;color:var(--muted)}.help-toc a:hover,.help-toc a.active{background:var(--brand-soft);color:var(--brand-strong);text-decoration:none}.help-body{padding:1.4rem 1.8rem;line-height:1.6}.help-body section{scroll-margin-top:1rem}.help-body section+section{border-top:1px solid var(--line);margin-top:1.4rem;padding-top:1.2rem}.help-body h3{margin-top:1rem}.help-body td{vertical-align:top}.help-body td:first-child{width:30%}.help-body code{background:var(--surface-2);border:1px solid var(--line);border-radius:4px;padding:0 .3rem;font-size:.85em;word-break:break-word}.help-body .callout{margin:.75rem 0}@media(max-width:900px){.help{grid-template-columns:1fr}.help-toc{position:static;max-height:none}}.wk{--gutter: 56px}.wk-row{display:grid;grid-template-columns:var(--gutter) repeat(var(--days),minmax(0,1fr));position:relative}.wk-head{border-bottom:1px solid var(--line);background:var(--surface-2)}.wk-dh{padding:.45rem .5rem;font-size:.8rem;color:var(--muted);border-left:1px solid var(--line)}.wk-dh strong{color:var(--ink);font-size:1rem}.wk-dh.today strong{background:var(--brand);color:var(--brand-ink);border-radius:99px;padding:0 .45rem}.wk-allday{border-bottom:1px solid var(--line)}.wk-allday .wk-gutter{padding:.35rem .3rem;font-size:.7rem}.wk-ad{border-left:1px solid var(--line);padding:3px;display:flex;flex-direction:column;gap:2px;min-height:30px;cursor:pointer}.wk-ad .ev,.wk-ev{font-size:.72rem;color:#fff;border-radius:4px;padding:1px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.wk-ad .ev.holiday{background:var(--line);color:var(--ink-2)}.wk-ad .ev.pending{opacity:.6;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.25) 0 4px,transparent 4px 8px)}.wk-body{height:min(62vh,640px);overflow-y:auto}.wk-hours{position:relative}.wk-hours span{position:absolute;right:6px;transform:translateY(-50%);font-size:.7rem;color:var(--muted);font-variant-numeric:tabular-nums}.wk-col{position:relative;border-left:1px solid var(--line);cursor:copy;background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px 48px),repeating-linear-gradient(to bottom,transparent 0 24px,var(--surface-3) 24px 25px,transparent 25px 48px)}.wk-col.weekend{background-color:var(--surface-2)}.wk-ev{position:absolute;display:flex;flex-direction:column;padding:3px 6px;line-height:1.25;white-space:normal;box-shadow:0 1px 2px #00000026;z-index:1}.wk-ev strong{font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wk-ev span{opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wk-now{position:absolute;left:0;right:0;height:2px;background:#ef4444;z-index:2;pointer-events:none}.wk-now:before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:#ef4444}.cal .ev[data-ev]{cursor:pointer}.cal .day{cursor:copy}.picker{border:1px solid var(--line-strong);border-radius:8px;max-height:190px;overflow-y:auto;padding:.35rem .6rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.1rem 1rem;margin-top:.35rem;font-weight:400}.picker.short{max-height:130px}.picker label.check{font-size:.85rem}@media(max-width:900px){.wk{--gutter: 40px}.picker{grid-template-columns:1fr}}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1rem;overflow-x:auto}.tabs button{border:0;background:none;padding:.6rem .9rem;font:600 .9rem var(--font);color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.on{color:var(--brand);border-bottom-color:var(--brand)}.late{color:var(--bad)!important;font-weight:600}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.proj-card{color:inherit;display:block;transition:box-shadow .12s,transform .12s}.proj-card:hover{text-decoration:none;box-shadow:0 6px 18px #1018281f;transform:translateY(-1px)}.timeline{display:flex;flex-direction:column}.tl-item{display:flex;gap:.8rem;border-left:2px solid var(--line);margin-left:.45rem;padding:.5rem 0 .5rem 1rem;position:relative;cursor:pointer;align-items:center}.tl-item .tl-dot{position:absolute;left:-7px;top:.85rem;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--brand)}.tl-item.done .tl-dot{background:var(--ok);border-color:var(--ok)}.tl-item.late .tl-dot{border-color:var(--bad)}.rev{display:inline-grid;place-items:center;min-width:26px;height:22px;padding:0 .35rem;border-radius:6px;background:#0f172a;color:#fff;font-weight:700;font-size:.78rem}.phases{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;margin-top:.8rem}.phase{border:1px solid var(--line);border-top:4px solid #94a3b8;border-radius:8px;padding:.5rem .6rem;display:flex;flex-direction:column;gap:.1rem;background:var(--surface-2)}.phase.st-doing{border-top-color:#2563eb;background:var(--brand-soft)}.phase.st-review{border-top-color:#d97706;background:var(--warn-soft)}.phase.st-done{border-top-color:#16a34a;background:var(--ok-soft)}.contact{padding:.45rem 0;border-bottom:1px solid var(--line);cursor:pointer}.contact:last-child{border-bottom:0}.kanban,.pipeline{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:.8rem;overflow-x:auto;align-items:start}.kb-col{background:var(--surface-3);border-radius:12px;padding:.6rem;min-height:200px}.kb-head{font-weight:700;font-size:.9rem;padding:.2rem .3rem .6rem;display:flex;gap:.4rem;align-items:center}.kb-list{display:flex;flex-direction:column;gap:.5rem;min-height:120px;border-radius:8px;transition:background .1s}.kb-list.over{background:color-mix(in srgb,var(--brand) 10%,transparent);outline:2px dashed color-mix(in srgb,var(--brand) 45%,transparent)}.kb-card{background:var(--surface);border-radius:8px;padding:.6rem .7rem;box-shadow:var(--shadow);border-left:4px solid var(--brand);cursor:grab}.kb-card.locked{cursor:default}.kb-card.dragging{opacity:.45}.kb-title{font-weight:600;margin-top:.15rem}.kb-card .progress{height:5px;margin-top:.45rem}.gantt{display:grid;grid-template-columns:280px minmax(0,1fr);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;box-shadow:var(--shadow)}.gt-left{border-right:1px solid var(--line);background:var(--surface);z-index:2}.gt-right{overflow-x:auto}.gt-hd{height:52px;border-bottom:1px solid var(--line);background:var(--surface-2);position:relative}.gt-months,.gt-days{position:relative;height:26px}.gt-months span,.gt-days span{position:absolute;top:0;height:26px;line-height:26px;font-size:.72rem;color:var(--muted);border-left:1px solid var(--line);padding-left:4px;white-space:nowrap;overflow:hidden;text-transform:capitalize}.gt-months span{font-weight:700;color:var(--ink-2)}.gt-days span.we{background:var(--surface-3)}.gt-days span.td{background:var(--brand);color:var(--brand-ink)}.gt-row{height:34px;border-bottom:1px solid var(--line);position:relative;display:flex;align-items:center;gap:.5rem;padding:0 .6rem;font-size:.85rem}.gt-left .gt-row{justify-content:space-between;overflow:hidden}.gt-left .gt-task{padding-left:1.4rem;cursor:pointer}.gt-left .gt-task:hover,.gt-left .gt-project{background:var(--surface-2)}.gt-left .gt-project a{color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gt-tl{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gt-left .gt-row>.muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px;flex:none}.gt-body{position:relative}.gt-body .gt-row{padding:0}.gt-body .gt-project{background:color-mix(in srgb,var(--surface-2) 70%,transparent)}.gt-we{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--surface-3) 80%,transparent)}.gt-today{position:absolute;top:0;bottom:0;width:2px;background:#ef4444;z-index:3}.gt-pbar{position:absolute;height:8px;border-radius:4px;opacity:.55;top:13px}.gt-ms{position:absolute;top:10px;width:14px;height:14px;background:var(--ink);transform:rotate(45deg);border-radius:2px;z-index:2}.gt-ms.done{background:var(--ok)}.gt-bar{position:absolute;top:6px;height:22px;border-radius:5px;background:color-mix(in srgb,var(--c) 30%,var(--surface));border:1px solid var(--c);overflow:hidden;font-size:.72rem;display:flex;align-items:center;z-index:1}.gt-bar span{position:relative;padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink);font-weight:600}.gt-bar .gt-prog{position:absolute;left:0;top:0;bottom:0;background:var(--c);opacity:.55}.gt-bar.st-done{opacity:.6}.gt-bar.edit{cursor:grab;touch-action:none}.gt-bar.edit .gt-h{position:absolute;right:0;top:0;bottom:0;width:7px;cursor:ew-resize;background:#0f172a26}.gt-nodate{position:absolute;top:9px;font-style:italic}.chart{width:100%;display:block}.chart-x{display:flex;font-size:.68rem;color:var(--muted)}.chart-x span{flex:1;text-align:center;overflow:hidden}.stack-bar{display:flex;height:16px;border-radius:99px;overflow:hidden;background:var(--line)}.stack-bar>div{height:100%}table.load td.load-cell{text-align:right;font-size:.78rem;border-left:1px solid #fff}table.load td.load-cell strong{display:block;font-size:.85rem}table.load td.load-cell.over{color:#fff}table.timesheet input.ts{width:64px;text-align:right;padding:.3rem .4rem}table.timesheet tfoot th{background:var(--surface-2)}.v3d-back{position:fixed;inset:0;background:#0f172a99;z-index:70;display:grid;place-items:center;padding:1rem}.v3d{background:var(--surface);border-radius:14px;width:min(1400px,100%);height:min(900px,100%);display:flex;flex-direction:column;overflow:hidden}.v3d-bar{display:flex;gap:.4rem;align-items:center;padding:.6rem .8rem;border-bottom:1px solid var(--line);flex-wrap:wrap}.v3d-stage,.ws3d-stage{position:relative;flex:1;min-height:0}.v3d-stage canvas,.ws3d-stage canvas{display:block}.v3d-msg{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted)}.v3d-info{padding:.45rem .8rem;border-top:1px solid var(--line)}.ws3d{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1rem;height:calc(100vh - 190px);min-height:460px}.ws3d-stage{overflow:hidden}.ws3d-labels{position:absolute;top:0;left:0;pointer-events:none}.ws3d-label{pointer-events:auto;cursor:pointer;background:color-mix(in srgb,var(--surface) 92%,transparent);color:var(--ink);border-radius:8px;padding:.25rem .5rem;font-size:.72rem;box-shadow:0 2px 6px #00000026;border-left:4px solid #94a3b8;display:flex;flex-direction:column;line-height:1.25;max-width:170px}.ws3d-label.st-busy{border-left-color:#16a34a}.ws3d-label.st-waiting{border-left-color:#d97706}.ws3d-label.st-overloaded{border-left-color:#dc2626}.ws3d-label em{font-style:normal;color:var(--muted)}.ws3d-side{overflow-y:auto}.ws-task{display:block;color:inherit;border:1px solid var(--line);border-left:4px solid var(--brand);border-radius:8px;padding:.45rem .6rem;margin-bottom:.45rem;font-size:.85rem}.ws-task:hover{text-decoration:none;background:var(--surface-2)}@media(max-width:900px){.gantt{grid-template-columns:150px minmax(0,1fr)}.ws3d{grid-template-columns:1fr;height:auto}.ws3d-stage{height:60vh}}.content.full{padding:0;max-width:none}.s3d{position:relative;overflow:hidden;background:var(--surface-3);--s3d: #0f6b46;font-size:14px;user-select:none}.s3d-stage{position:absolute;inset:0;z-index:0}.s3d-stage canvas{display:block}.s3d-labels{position:absolute;top:0;left:0;pointer-events:none}.s3d .grow{flex:1}.s3d-top{position:absolute;top:12px;left:12px;right:12px;z-index:6;display:flex;align-items:center;gap:.6rem;background:var(--surface);border-radius:16px;padding:.5rem .6rem .5rem .7rem;box-shadow:0 6px 24px #0f172a14}.s3d-brand{display:flex;align-items:center;gap:.55rem;min-width:0}.s3d-brand strong{display:block;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.s3d-brand small{white-space:nowrap;display:flex;align-items:center;gap:.3rem;color:var(--muted);font-size:.75rem}.s3d-logo{width:38px;height:38px;border-radius:10px;background:var(--s3d);color:#fff;display:grid;place-items:center;font-weight:800;letter-spacing:.02em;flex:none}.s3d-live-dot,.s3d-pill.live i{width:7px;height:7px;border-radius:50%;background:#16a34a;display:inline-block;box-shadow:0 0 0 3px #16a34a2e}.s3d-search{position:relative;display:flex;align-items:center;gap:.4rem;background:var(--surface-3);border-radius:10px;padding:0 .6rem;height:38px;flex:0 1 240px;min-width:110px}.s3d-search svg{width:16px;height:16px;color:var(--muted);flex:none}.s3d-search input{border:0;background:none;padding:0;height:100%;box-shadow:none;outline:none;font-size:.88rem}.s3d-search kbd{font:600 .72rem var(--font);color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:0 .3rem;background:var(--surface)}.s3d-results{position:absolute;top:44px;left:0;right:0;background:var(--surface);border-radius:12px;box-shadow:0 10px 30px #0f172a29;padding:.3rem;z-index:9}.s3d-results button{display:block;width:100%;text-align:left;border:0;background:none;padding:.45rem .55rem;border-radius:8px;cursor:pointer}.s3d-results button:hover{background:var(--surface-3)}.s3d-results small{display:block;color:var(--muted)}.s3d-results p{margin:.4rem .5rem;color:var(--muted)}.s3d-pill{min-width:0;overflow:hidden;text-overflow:ellipsis;background:var(--surface-3);border-radius:999px;padding:.4rem .85rem;font-weight:600;font-size:.84rem;white-space:nowrap;display:inline-flex;align-items:center;gap:.4rem}.s3d-pill.live{background:var(--ok-soft);color:var(--ok);text-transform:none}.s3d-seg{display:flex;background:var(--surface-3);border-radius:10px;padding:3px}.s3d-seg button{white-space:nowrap;border:0;background:none;padding:.35rem .7rem;border-radius:8px;font-weight:600;font-size:.84rem;color:var(--muted);cursor:pointer}.s3d-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0f172a1f}.s3d-link{border:0;background:none;color:var(--s3d);font-weight:700;cursor:pointer;white-space:nowrap}.s3d-icon{width:34px;height:34px;border:0;background:none;border-radius:9px;display:grid;place-items:center;cursor:pointer;color:var(--ink-2);flex:none}.s3d-icon:hover{background:var(--surface-3)}.s3d-icon svg{width:18px;height:18px}.s3d-btn{border:0;background:var(--s3d);color:#fff;border-radius:10px;padding:.5rem .8rem;font-weight:700;display:inline-flex;gap:.4rem;align-items:center;cursor:pointer;white-space:nowrap}.s3d-btn svg{width:16px;height:16px}.s3d-kpis{position:absolute;top:76px;left:12px;right:12px;z-index:4;display:flex;gap:.6rem;flex-wrap:wrap;pointer-events:none}.s3d-kpi{background:var(--surface);border-radius:14px;padding:.65rem .95rem;min-width:150px;box-shadow:0 6px 20px #0f172a12;pointer-events:auto}.s3d-kpi small{display:block;color:var(--muted);font-size:.78rem}.s3d-kpi strong{display:block;font-size:1.55rem;line-height:1.2;font-weight:800;letter-spacing:-.01em}.s3d-kpi em{font-style:normal;font-size:.76rem;color:var(--muted)}.s3d .t-alert{color:#dc2626}.s3d .t-warn{color:#d97706}.s3d .t-info{color:#2563eb}.s3d .t-ok{color:#16a34a}.s3d-tag{display:flex;align-items:center;gap:.35rem;background:var(--surface);border-radius:10px;padding:.28rem .6rem;box-shadow:0 2px 10px #0f172a29;font-size:12px;white-space:nowrap;cursor:pointer;pointer-events:auto}.s3d-tag i{width:8px;height:8px;border-radius:50%;flex:none}.s3d-tag b{font-weight:700;color:var(--ink)}.s3d-tag span{color:var(--muted)}.s3d-tag.sel{outline:2px solid var(--s3d)}.s3d-tag:hover{z-index:3;box-shadow:0 4px 16px #0f172a38}.s3d-btag{background:var(--s3d);color:#fff;font-size:11px;font-weight:700;padding:.2rem .55rem;border-radius:6px;letter-spacing:.02em;white-space:nowrap}.s3d-pin{filter:drop-shadow(0 3px 3px rgba(15,23,42,.3));pointer-events:none}.s3d-pin svg{display:block;animation:s3dpin 1.8s ease-in-out infinite}@keyframes s3dpin{0%,to{transform:translateY(-4px)}50%{transform:translateY(2px)}}.s3d-tracker{position:absolute;left:12px;bottom:12px;z-index:4;display:flex;gap:1rem;align-items:stretch;background:var(--surface);border-radius:16px;padding:.85rem 1rem;box-shadow:0 6px 24px #0f172a14;max-width:min(1000px,calc(100% - 420px))}.s3d.demo-on .s3d-tracker{bottom:50px}.s3d-tr-steps{min-width:0;flex:1}.s3d-tr-steps h4{margin:0 0 .7rem;font-size:.85rem}.s3d-tr-steps ol{list-style:none;margin:0;padding:0;display:flex}.s3d-tr-steps li{position:relative;text-align:center;flex:1 1 0;min-width:0;padding:0 2px}.s3d-tr-steps li+li:before{content:"";position:absolute;top:11px;right:calc(50% + 14px);left:calc(-50% + 14px);height:2px;background:var(--line)}.s3d-tr-steps li.done+li:before,.s3d-tr-steps li.done+li.current:before{background:var(--s3d)}.s3d-tr-steps li i{display:grid;place-items:center;width:24px;height:24px;margin:0 auto .35rem;border-radius:50%;background:var(--line);color:#fff;font-style:normal;font-size:.75rem;font-weight:800}.s3d-tr-steps li.done i{background:var(--s3d)}.s3d-tr-steps li.current i{background:var(--surface);box-shadow:inset 0 0 0 3px var(--s3d);transform:scale(1.12)}.s3d-tr-steps li b{display:block;font-size:.76rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s3d-tr-steps li small{display:block;color:var(--muted);font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s3d-tr-steps{min-width:min(calc(var(--n, 5) * 80px),58vw)}.s3d-tr-card{border:1px solid var(--line);border-radius:12px;padding:.6rem .8rem;min-width:190px;max-width:240px;display:flex;flex-direction:column;gap:.15rem}.s3d-tr-card strong{font-size:.95rem}.s3d-tr-card span{font-size:.82rem}.s3d-tr-card small{color:var(--muted);font-size:.76rem}.s3d-tr-card em{align-self:flex-start;font-style:normal;background:var(--brand-soft);color:var(--brand-strong);border-radius:999px;padding:.1rem .55rem;font-size:.76rem;font-weight:600;margin-top:.3rem}.s3d-tr-card a{font-size:.78rem;margin-top:.2rem}.s3d-panel{position:absolute;right:12px;bottom:12px;width:380px;z-index:4;background:var(--surface);border-radius:16px;padding:.6rem;box-shadow:0 6px 24px #0f172a14}.s3d-tabs{display:flex;background:var(--surface-3);border-radius:10px;padding:3px;margin-bottom:.3rem}.s3d-tabs button{flex:1;border:0;background:none;padding:.4rem .3rem;border-radius:8px;font-weight:600;font-size:.82rem;color:var(--muted);cursor:pointer}.s3d-tabs button span{font-weight:500;opacity:.75}.s3d-tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0f172a1f}.s3d-list{max-height:240px;overflow:auto}.s3d-row{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.55rem .45rem;border-bottom:1px solid #f1f5f9;color:inherit;text-decoration:none;border-radius:8px}a.s3d-row:hover{background:var(--surface-2);text-decoration:none}.s3d-row:last-child{border-bottom:0}.s3d-row b{display:block;font-size:.88rem}.s3d-row small{color:var(--muted);font-size:.76rem}.s3d-row em,.s3d-tourbar em{font-style:normal;font-size:.75rem;font-weight:600;padding:.15rem .55rem;border-radius:999px;white-space:nowrap;background:var(--surface-3);color:var(--ink-2)}.s3d-row em.t-warn,.s3d-tourbar em.t-warn{background:var(--warn-soft);color:var(--warn)}.s3d-row em.t-alert,.s3d-tourbar em.t-alert{background:var(--bad-soft);color:var(--bad)}.s3d-row em.t-ok,.s3d-tourbar em.t-ok{background:var(--ok-soft);color:var(--ok)}.s3d-row em.t-info,.s3d-tourbar em.t-info{background:var(--brand-soft);color:var(--brand-strong)}.s3d-empty{color:var(--muted);margin:.6rem .5rem}.s3d-more{display:block;text-align:center;font-size:.8rem;padding:.3rem}.s3d-detail{position:absolute;right:12px;top:160px;width:340px;max-height:calc(100% - 470px);min-height:120px;overflow:auto;z-index:5;background:var(--surface);border-radius:16px;padding:.8rem .9rem;box-shadow:0 10px 30px #0f172a24}.s3d-detail h3{margin:0;font-size:1rem}.s3d-status{display:flex;align-items:center;gap:.45rem;margin:.5rem 0;font-weight:600}.s3d-status i,.s3d-tourbar h3 i{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.s3d-demo{position:absolute;left:12px;bottom:12px;z-index:4;background:color-mix(in srgb,var(--surface) 92%,transparent);border-radius:999px;padding:.35rem .8rem;font-size:.78rem;color:var(--muted);box-shadow:0 2px 8px #0f172a14}.s3d-tourbar{position:absolute;left:50%;transform:translate(-50%);bottom:16px;width:min(460px,calc(100% - 24px));z-index:7;background:var(--surface);border-radius:16px;padding:.8rem 1rem;box-shadow:0 12px 34px #0f172a2e}.s3d-tourbar small{color:var(--muted)}.s3d-tourbar h3{margin:.2rem 0;display:flex;align-items:center;gap:.45rem;font-size:1.05rem}.s3d-tourbar p{margin:0 0 .4rem}.s3d-tourbar ul{margin:0 0 .6rem;padding-left:1rem;font-size:.85rem}.s3d-tourbar svg{width:16px;height:16px}.s3d.touring .s3d-tracker,.s3d.touring .s3d-panel{display:none}.s3d-editor{position:absolute;top:76px;right:12px;bottom:12px;width:390px;z-index:6;background:var(--surface);border-radius:16px;box-shadow:0 10px 34px #0f172a29;display:flex;flex-direction:column;overflow:hidden;user-select:text}.s3d.editing .s3d-kpis{right:414px}.s3d-ed-head{display:flex;align-items:center;justify-content:space-between;padding:.7rem .9rem .3rem}.s3d-ed-head h3{margin:0;font-size:1rem}.s3d-ed-tabs{display:flex;gap:.2rem;padding:0 .7rem;border-bottom:1px solid var(--line)}.s3d-ed-tabs button{border:0;background:none;padding:.55rem .6rem;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;cursor:pointer}.s3d-ed-tabs button.on{color:var(--ink);border-color:var(--s3d)}.s3d-ed-body{flex:1;overflow:auto;padding:.8rem .9rem;display:flex;flex-direction:column;gap:.55rem}.s3d-ed-body h4{margin:.6rem 0 .1rem;font-size:.88rem}.s3d-ed-foot{display:flex;justify-content:flex-end;gap:.5rem;padding:.6rem .9rem;border-top:1px solid var(--line)}.s3d-grid2{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .6rem}.s3d-presets{display:grid;gap:.4rem}.s3d-preset{display:grid;grid-template-columns:14px 1fr;column-gap:.55rem;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:.5rem .6rem;cursor:pointer}.s3d-preset i{grid-row:span 2;width:14px;height:14px;border-radius:4px;margin-top:.2rem}.s3d-preset small{color:var(--muted);font-size:.76rem}.s3d-preset:hover{border-color:var(--s3d)}.s3d-preset.on{border-color:var(--s3d);box-shadow:0 0 0 2px color-mix(in srgb,var(--s3d) 25%,transparent)}.s3d-bld{border:1px solid var(--line);border-radius:10px;padding:.4rem .6rem}.s3d-bld summary{cursor:pointer;font-weight:600}.s3d-bld .s3d-grid2{margin-top:.5rem}.s3d-kinds{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.4rem}.s3d-kinds button{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.25rem .6rem;font-size:.78rem;cursor:pointer}.s3d-kinds button:hover{border-color:var(--s3d);color:var(--s3d)}.s3d-objlist{display:flex;flex-direction:column;gap:.2rem}.s3d-objlist button{text-align:left;border:0;background:var(--surface-2);border-radius:8px;padding:.35rem .55rem;cursor:pointer}.s3d-objlist button.on{background:color-mix(in srgb,var(--s3d) 14%,var(--surface))}.s3d-objlist small{display:block;color:var(--muted);font-size:.74rem}.s3d-objform{border:1px solid color-mix(in srgb,var(--s3d) 40%,var(--surface));border-radius:12px;padding:.7rem;display:flex;flex-direction:column;gap:.5rem;background:color-mix(in srgb,var(--s3d) 4%,var(--surface))}.s3d-objform h4{margin:0}.s3d-kpirow{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;align-items:center}.s3d-kpirow input{font-size:.8rem;padding:.3rem .5rem}.s3d-welcome{position:absolute;inset:0;z-index:8;display:grid;place-items:center;background:#eef1f58c}.s3d-welcome-card{background:var(--surface);border-radius:18px;padding:1.4rem 1.6rem;max-width:460px;box-shadow:0 16px 40px #0f172a2e;text-align:center}.s3d-welcome-card h2{margin-top:0}.s3d:fullscreen{width:100vw;height:100vh!important}@media(max-width:1450px){.s3d-pill:not(.live){display:none}}@media(max-width:1100px){.s3d-search{width:180px}.s3d-pill:not(.live),.s3d-seg{display:none}.s3d-tracker{max-width:calc(100% - 24px);bottom:auto;top:auto}.s3d-panel{display:none}}@media(max-width:760px){.s3d-top{flex-wrap:wrap}.s3d-search,.s3d-pill.live,.s3d-link{display:none}.s3d-kpis{top:70px;flex-wrap:nowrap;overflow-x:auto;pointer-events:auto}.s3d-kpi{min-width:130px}.s3d-tr-card{display:none}.s3d-editor{left:12px;width:auto}.s3d-detail{left:12px;width:auto;top:auto;bottom:12px;max-height:50%}}.banner.update{background:var(--ok-soft);color:var(--ok)}.banner.update svg{width:16px;height:16px;flex:none}.banner.update button{margin-left:auto;border:0;background:none;color:inherit;text-decoration:underline;cursor:pointer;font:inherit}.release-notes{margin-top:.5rem}.release-notes h4{margin:.6rem 0 .2rem;font-size:.9rem}.release-notes ul{margin:.2rem 0 .4rem;padding-left:1.2rem}.release-notes p{margin:.3rem 0}.banner.demo{background:linear-gradient(90deg,#4c1d95,#2563eb);color:#fff;flex-wrap:wrap}.banner.demo svg{width:16px;height:16px;flex:none}.banner.demo button{border:1px solid rgba(255,255,255,.45);background:#ffffff1f;color:#fff;border-radius:6px;padding:.2rem .6rem;cursor:pointer;font:inherit;font-size:.82rem}.banner.demo button:first-of-type{margin-left:auto}.banner.demo button:hover{background:#ffffff40}.pill.info svg{width:13px;height:13px}.demo-editions{display:grid;gap:.5rem}.demo-ed{display:grid;grid-template-columns:auto 1fr;column-gap:.6rem;padding:.6rem .75rem;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--surface)}.demo-ed:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.demo-ed input{grid-row:span 3;margin-top:.2rem}.demo-ed .t{font-weight:700}.demo-ed .d{font-size:.85rem;color:var(--ink-2)}.demo-ed .f{font-size:.75rem;color:var(--muted, #64748b);margin-top:.15rem}.demo-licence{border:2px solid #7c3aed;background:linear-gradient(135deg,color-mix(in srgb,#7c3aed 8%,var(--surface)),var(--brand-soft))}.demo-licence h2{display:flex;align-items:center;gap:.5rem}.demo-licence h2 svg{width:22px;height:22px;color:#7c3aed}.demo-licence .contact{font-size:1.05rem;font-weight:600;white-space:pre-line;margin:.75rem 0}.report-cats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.report-cat{display:grid;grid-template-columns:auto 1fr;column-gap:.5rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:10px;cursor:pointer}.report-cat:has(input:checked){border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.report-cat input{grid-row:span 2;margin-top:.2rem}.report-cat .t{font-weight:650}.report-cat .d{font-size:.8rem;color:var(--muted)}.report-photos{display:flex;flex-wrap:wrap;gap:.5rem;margin:.4rem 0}.report-photos:empty{display:none}.report-photo{position:relative;width:96px;height:72px}.report-photo img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.report-photo button{position:absolute;top:2px;right:2px;background:color-mix(in srgb,var(--surface) 90%,transparent);padding:0 .3rem}.report-photo button svg{width:14px;height:14px}@media(max-width:640px){.report-cats{grid-template-columns:1fr}}.toast.live{background:#1e1b4b;color:#fff;border-left:4px solid #a78bfa}.live-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#22c55e;margin-right:.35rem;vertical-align:middle;animation:live-pulse 1.6s ease-in-out infinite}@keyframes live-pulse{0%,to{box-shadow:0 0 #22c55e8c}50%{box-shadow:0 0 0 6px #22c55e00}}.live-list{list-style:none;margin:0;padding:0 1.25rem 1rem;display:flex;flex-direction:column;gap:.5rem;max-height:420px;overflow:auto}.live-list li{display:grid;grid-template-columns:3rem auto 1fr;gap:.5rem;align-items:start;font-size:.85rem;line-height:1.35}.live-list .pill{justify-self:start}.pill.violet{background:color-mix(in srgb,#9333ea 14%,var(--surface));color:color-mix(in srgb,#9333ea 75%,var(--ink));border-color:transparent}.pill.teal{background:color-mix(in srgb,#0d9488 16%,var(--surface));color:color-mix(in srgb,#0d9488 75%,var(--ink));border-color:transparent}.brand{position:relative}.bell{position:relative;margin-left:auto;background:none;border:0;color:inherit;cursor:pointer;padding:.3rem;border-radius:8px;display:inline-flex}.bell:hover{background:#ffffff14}.bell svg{width:20px;height:20px}.bell .badge-count{position:absolute;top:-2px;right:-4px;background:#ef4444;color:#fff;border-radius:99px;font-size:.68rem;font-weight:700;padding:0 .35rem;line-height:1.1rem}.topbar .bell{margin-left:.5rem}.notif-list{display:flex;flex-direction:column;gap:.35rem;max-height:60vh;overflow:auto}.notif{display:flex;gap:.65rem;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:.6rem .7rem;cursor:pointer;font:inherit;color:inherit}.notif:hover{border-color:var(--brand)}.notif.unread{background:var(--brand-soft);border-color:transparent}.notif .ico svg{width:18px;height:18px;color:var(--brand)}.notif .txt{display:flex;flex-direction:column;gap:.1rem;font-size:.88rem}.notif .txt small{color:var(--muted)}.perm-box{border:1px solid var(--line);border-radius:10px;padding:.75rem 1rem;margin-top:1rem}.perm-box legend{font-weight:650;padding:0 .3rem}.perm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem 1rem}@media(max-width:640px){.perm-grid{grid-template-columns:1fr}}.thread{display:flex;flex-direction:column;gap:.5rem}.thread .msg{border:1px solid var(--line);border-radius:10px;padding:.55rem .75rem;background:var(--surface);max-width:92%}.thread .msg.mine{align-self:flex-end;background:var(--brand-soft);border-color:transparent}.thread .msg.internal{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,var(--surface))}.thread .msg .who{font-weight:600;font-size:.85rem;margin-bottom:.15rem}.card.soft{background:var(--surface-2, #f8fafc);box-shadow:none}.steps{display:flex;gap:.3rem;flex-wrap:wrap}.steps span{flex:1;min-width:90px;text-align:center;font-size:.78rem;padding:.35rem .4rem;border-radius:8px;background:var(--surface-2, #f1f5f9);color:var(--muted)}.steps span.done{background:var(--ok-soft, #dcfce7);color:var(--ok, #15803d)}.steps span.cur{background:var(--brand);color:var(--brand-ink);font-weight:600}.pstep{font-size:.88rem}.bad-text{color:var(--bad)}.kpi{border:1px solid var(--line);border-radius:10px;padding:.6rem .8rem;display:flex;flex-direction:column}.kpi span{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}.kpi strong{font-size:1.15rem}.tabs button .pill{margin-left:.3rem}.contact.clickable{cursor:pointer;border-radius:8px;padding:.35rem;margin:0 -.35rem}.contact.clickable:hover{background:var(--surface-2, #f8fafc)}.portal{min-height:100vh;background:var(--bg, #f3f4f6)}.portal-top{display:flex;align-items:center;gap:1rem;padding:.75rem 2rem;background:#0f172a;color:#fff;position:sticky;top:0;z-index:5}.portal-top .brand{color:#fff;text-decoration:none}.portal-top .who{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.portal-top .who .muted{color:#94a3b8}.portal-top .btn.ghost{color:#e2e8f0}.portal-main{max-width:1200px;margin:0 auto;padding:1.5rem 2rem 3rem}.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.portal-card{display:flex;flex-direction:column;gap:.6rem;text-decoration:none;color:inherit;border-top:4px solid var(--c, var(--brand));transition:transform .12s,box-shadow .12s}.portal-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px #0f172a14;text-decoration:none}.portal-card h2{margin:0;font-size:1.1rem}.pbar{flex:1;height:8px;background:var(--surface-2, #e5e7eb);border-radius:99px;overflow:hidden;min-width:80px}.pbar span{display:block;height:100%;border-radius:99px}.phases{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.35rem}.phases .ph{font-size:.72rem;padding:.05rem .45rem;border-radius:99px;background:var(--surface-3);color:var(--muted)}.phases .ph.doing{background:var(--brand);color:var(--brand-ink)}.phases .ph.done{background:#dcfce7;color:#15803d}.phases .ph.review{background:var(--warn-soft);color:var(--warn)}@media(max-width:760px){.portal-top{padding:.6rem 1rem;flex-wrap:wrap}.portal-main{padding:1rem}.portal-top .who{display:none}}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem .25rem}.card-head h2{margin:0}ul.plain{list-style:none;margin:0;padding:0}ul.plain li{padding:.45rem 0;border-bottom:1px solid var(--line)}ul.plain li:last-child{border-bottom:0}li.clickable{cursor:pointer}li.clickable:hover{color:var(--brand)}.ok-text{color:var(--ok);font-weight:600}.nowrap{flex-wrap:nowrap;white-space:nowrap}.row.wrap{flex-wrap:wrap}.callout.ok{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 35%,var(--surface));color:color-mix(in srgb,var(--ok) 70%,var(--ink))}.pill.brand{background:color-mix(in srgb,#7c3aed 14%,var(--surface));color:color-mix(in srgb,#7c3aed 75%,var(--ink));border-color:transparent}.seg label{position:relative;cursor:pointer}.seg label input{position:absolute;opacity:0;pointer-events:none}.seg label span{display:inline-block;padding:.45rem .85rem;font:600 .85rem var(--font);color:var(--muted)}.seg label input:checked+span{background:var(--brand-soft);color:var(--brand-strong)}.seg label input:focus-visible+span{outline:2px solid var(--brand);outline-offset:-2px}.scan-field{display:flex;align-items:center;gap:.5rem;border:2px solid var(--brand);border-radius:10px;padding:.35rem .5rem;background:var(--surface)}.scan-field .scan-ico svg{width:22px;height:22px;color:var(--brand);display:block}.scan-field input{border:0;outline:0;flex:1;font-size:1rem;padding:.35rem .25rem;min-width:0;background:transparent;box-shadow:none}.cam-box{position:relative;background:#000;border-radius:10px;overflow:hidden;aspect-ratio:4 / 3;max-height:60vh}.cam-box video{width:100%;height:100%;object-fit:cover;display:block}.cam-aim{position:absolute;inset:35% 12%;border:2px solid rgba(255,255,255,.85);border-radius:8px;box-shadow:0 0 0 100vmax #00000040}.cam-last{font-weight:600;margin-top:.25rem}.read-progress .bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden}.read-progress .bar span{display:block;height:100%;background:var(--brand);transition:width .2s}.doc-preview img{max-width:100%;max-height:260px;border-radius:8px;border:1px solid var(--line);display:block;margin-bottom:.35rem}.doc-raw{white-space:pre-wrap;word-break:break-word;font-size:.75rem}.doc-text{white-space:pre-wrap;font-size:.78rem;max-height:320px;overflow:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:.75rem}.reasons{margin:.3rem 0 0 1rem;padding:0}.qty-edit{display:inline-flex;align-items:center;gap:.15rem}.qty-edit input{width:5.5rem;text-align:right}tr.flash td{animation:flash 1.2s ease-out}@keyframes flash{0%{background:#fef08a}to{background:transparent}}.label-pick{max-height:240px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:.5rem .75rem;display:grid;gap:.3rem}.item-code svg{height:52px;width:auto;display:block}svg.barcode{max-width:100%}.labels{display:none}@media print{.print-area.labels{display:grid}.labels.sheet{grid-template-columns:repeat(3,70mm);grid-auto-rows:37mm}.labels.roll{grid-template-columns:62mm;grid-auto-rows:29mm}.labels .label{box-sizing:border-box;padding:2.5mm 3mm;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;break-inside:avoid;page-break-inside:avoid}.labels.roll .label{break-after:page;page-break-after:always;padding:1.5mm 2mm}.labels .label-name{font:700 9pt/1.15 var(--font);max-height:2.3em;overflow:hidden;color:#000}.labels .label-meta{font:7pt var(--font);color:#333}.labels .label svg{height:15mm;width:100%}.labels.roll .label svg{height:13mm}}@media(max-width:640px){.hide-sm{display:none}}table.totals{width:auto;min-width:240px;margin-left:auto;border-collapse:collapse}table.totals td{padding:.25rem .6rem;border:0}table.totals td.num{text-align:right;white-space:nowrap}table.totals tr.ttc td{font-weight:700;border-top:1px solid var(--line)}table.totals.small td{padding:.15rem .5rem;font-size:.85rem}.kanban.wq{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);padding-bottom:.5rem}.wq-head{align-items:center;gap:.5rem}.wq-head .avatar{width:30px;height:30px;font-size:.72rem}.wq-head .btn.small{padding:.2rem .35rem}.warn-text{color:var(--warn, #d97706);font-weight:600}.wq-people{columns:3 220px;margin-top:.4rem}.wq-people>div{break-inside:avoid}.qr-box svg{width:170px;height:170px;display:block}pre.secret{white-space:pre-wrap;margin:0}.tutos{margin-bottom:1.25rem}.tuto-theme h3{display:flex;align-items:center;gap:.4rem;margin:1rem 0 .5rem;font-size:1rem}.tuto-theme h3 svg{width:18px;height:18px;color:var(--brand)}.tuto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.8rem}.tuto-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden;color:inherit;text-decoration:none;background:var(--surface);transition:box-shadow .15s,transform .15s}.tuto-card:hover{box-shadow:var(--shadow);transform:translateY(-1px);text-decoration:none}.tuto-card img{width:100%;height:130px;object-fit:cover;object-position:top left;border-bottom:1px solid var(--line);background:var(--surface-3)}.tuto-card>div{padding:.65rem .8rem .8rem;display:flex;flex-direction:column;gap:.25rem}.tuto-meta{color:var(--brand);font-weight:600}.tuto-link{display:inline-flex;align-items:center;gap:.35rem;margin:-.25rem 0 .75rem;font-weight:600;font-size:.9rem}.tuto-link svg{width:16px;height:16px}.tuto{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1.25rem;align-items:start}.tuto aside{position:sticky;top:1rem}.tuto-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.25rem}.tuto-step h2{display:flex;align-items:center;gap:.6rem}.tuto-num{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--brand);color:var(--brand-ink);font-size:.95rem;flex:none}.tuto-img{display:block;margin:.75rem 0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface-3)}.tuto-img img{display:block;width:100%;height:auto}.tuto-legend{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.tuto-legend li{display:flex;gap:.6rem;align-items:flex-start}.tuto-mark{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e11d48;color:#fff;font-weight:700;font-size:.8rem}.tuto-list{margin:.25rem 0 0;padding-left:1.1rem;display:grid;gap:.35rem;font-size:.92rem}@media(max-width:1000px){.tuto{grid-template-columns:1fr}.tuto aside{position:static}}.recovery-codes{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem;margin-top:.8rem}.recovery-codes code{font-size:1rem;padding:.35rem .5rem;text-align:center;letter-spacing:.05em}
