:root{--bg: #F3F4F7;--surface: #FFFFFF;--surface-2: #F8F9FB;--line: #E3E6EC;--line-2: #EDEFF3;--fg: #12151C;--muted: #667085;--accent: #2B4EFF;--accent-soft: #E9EDFF;--accent-fg: #FFFFFF;--ink-soft: #3A4152;--ok: #12805A;--ok-soft: #E0F4EC;--warn: #A8650A;--warn-soft: #FCF0D9;--bad: #C73A33;--bad-soft: #FCE7E5;--side: #0E1117;--side-2: #171B24;--side-fg: #A8AFBF;--side-on: #FFFFFF;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .04);--shadow-lg: 0 20px 50px rgba(16, 24, 40, .22);--r: 14px;--font: "Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--display: "Bricolage Grotesque", "Manrope", ui-sans-serif, system-ui, sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0B0D12;--surface: #141821;--surface-2: #181D28;--line: #272D3B;--line-2: #1F2431;--fg: #EDF0F6;--muted: #9099AD;--accent: #7B95FF;--accent-soft: #1E2650;--accent-fg: #0B0D12;--ink-soft: #5B6479;--ok: #46C795;--ok-soft: #12302A;--warn: #E8B04D;--warn-soft: #3A2B10;--bad: #FF8079;--bad-soft: #3B1917;--side: #07090D;--side-2: #12151C;--shadow: 0 1px 2px rgba(0, 0, 0, .4);color-scheme:dark}}:root[data-theme=dark]{--bg: #0B0D12;--surface: #141821;--surface-2: #181D28;--line: #272D3B;--line-2: #1F2431;--fg: #EDF0F6;--muted: #9099AD;--accent: #7B95FF;--accent-soft: #1E2650;--accent-fg: #0B0D12;--ink-soft: #5B6479;--ok: #46C795;--ok-soft: #12302A;--warn: #E8B04D;--warn-soft: #3A2B10;--bad: #FF8079;--bad-soft: #3B1917;--side: #07090D;--side-2: #12151C;--shadow: 0 1px 2px rgba(0, 0, 0, .4);color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}h1,h2,h3,h4{margin:0;font-family:var(--display);letter-spacing:-.01em;text-wrap:balance}h1{font-size:26px;font-weight:700;line-height:1.15}h3{font-size:15px;font-weight:650}p{margin:0}button{font:inherit;color:inherit;cursor:pointer}a{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:12px}.tnum,td,.stat b,.money{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.shell{display:grid;grid-template-columns:248px minmax(0,1fr);height:100%}.sidebar{background:var(--side);color:var(--side-fg);display:flex;flex-direction:column;padding:18px 12px;gap:4px;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;color:var(--side-on);font-family:var(--display);font-weight:700;font-size:17px}.brand i{width:30px;height:30px;border-radius:9px;background:var(--accent);color:var(--accent-fg);display:grid;place-items:center;font-style:normal;font-size:14px}.nav{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;background:none;border:0;color:inherit;text-align:left;width:100%;font-weight:550}.nav:hover{background:var(--side-2);color:var(--side-on)}.nav.on{background:var(--side-2);color:var(--side-on);box-shadow:inset 2px 0 0 var(--accent)}.nav svg{flex:none}.nav .count{margin-left:auto;background:var(--accent);color:var(--accent-fg);border-radius:99px;font-size:11px;padding:0 7px;font-weight:700}.side-foot{margin-top:auto;padding:12px 8px 0;border-top:1px solid var(--side-2);display:flex;align-items:center;gap:10px;color:var(--side-on)}.side-foot small{display:block;color:var(--side-fg)}.main{display:flex;flex-direction:column;min-width:0;height:100%}.topbar{display:flex;align-items:center;gap:12px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.content{padding:24px;overflow-y:auto;flex:1;min-width:0}.content>*{max-width:1400px;margin-inline:auto}.gsearch{position:relative;flex:1;max-width:480px}.gsearch input{width:100%}.gresults{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);max-height:420px;overflow-y:auto;padding:6px;z-index:40}.gresults h4{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 10px 4px;font-family:var(--font)}.gresults button{display:flex;width:100%;text-align:left;gap:8px;align-items:center;padding:7px 10px;border:0;background:none;border-radius:8px}.gresults button:hover{background:var(--surface-2)}.menu-btn{display:none}.pop{position:absolute;right:0;top:calc(100% + 8px);width:360px;max-width:92vw;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);z-index:50;overflow:hidden}.pop header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.notif{display:flex;gap:10px;padding:11px 14px;border:0;background:none;width:100%;text-align:left;border-bottom:1px solid var(--line-2)}.notif:hover{background:var(--surface-2)}.notif.unread:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:6px;flex:none}.notif:not(.unread){padding-left:32px;opacity:.75}.relative{position:relative}.dot{position:absolute;top:5px;right:5px;min-width:16px;height:16px;border-radius:99px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;padding:0 4px}.stack{display:flex;flex-direction:column;gap:16px}.stack.s8{gap:8px}.stack.s12{gap:12px}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.grid{display:grid;gap:16px}.g6{grid-template-columns:repeat(6,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head p{margin-top:4px}.page-head .input{width:auto;min-width:170px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-width:0}.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 18px 0}.card-b{padding:16px 18px 18px}.stat{padding:16px 18px;display:flex;flex-direction:column;gap:6px;min-width:0}.stat span{color:var(--muted);font-size:12.5px;font-weight:600;display:flex;gap:6px;align-items:center}.stat b{font-family:var(--display);font-size:26px;letter-spacing:-.02em;line-height:1.1}.stat small{color:var(--muted);font-size:12px}.stat.warn b{color:var(--bad)}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-weight:600;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn.ghost{border-color:transparent;background:none}.btn.ghost:hover{background:var(--surface-2)}.btn.soft{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.btn.sm{height:30px;padding:0 10px;font-size:12.5px;border-radius:8px}.btn:disabled,.icon-btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:9px;border:0;background:none;color:var(--muted);flex:none}.icon-btn:hover{background:var(--surface-2);color:var(--fg)}.badge{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:99px;font-size:11.5px;font-weight:650;white-space:nowrap}.badge.gray{background:var(--line-2);color:var(--muted)}.badge.blue{background:var(--accent-soft);color:var(--accent)}.badge.green{background:var(--ok-soft);color:var(--ok)}.badge.amber{background:var(--warn-soft);color:var(--warn)}.badge.red{background:var(--bad-soft);color:var(--bad)}.badge.ink{background:var(--fg);color:var(--bg)}.avatar{display:inline-grid;place-items:center;border-radius:10px;color:#fff;font-weight:700;flex:none;font-family:var(--display)}.input{width:100%;height:38px;padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--fg);font:inherit}textarea.input{height:auto;padding:10px 12px;min-height:84px;resize:vertical}.input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}.search-in{padding-left:34px;background:var(--surface-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round'><circle cx='11' cy='11' r='7'/><path d='m21 21-4.3-4.3'/></svg>") no-repeat 11px center}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:12px;font-weight:650;color:var(--muted)}.field em{font-style:normal;font-size:11.5px;color:var(--warn)}.field.full{grid-column:1 / -1}.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;margin-bottom:18px}.tabs button{padding:10px 14px;border:0;background:none;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px}.tabs button.on{color:var(--fg);border-color:var(--accent)}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.filters .input{width:auto;min-width:140px}.filters .search-in{min-width:220px;flex:1;max-width:340px}.tbl-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:650;padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface-2)}td{padding:12px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:var(--surface-2)}td.num,th.num{text-align:right}.th-sort{background:none;border:0;padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;color:inherit;display:inline-flex;gap:5px;align-items:center}.th-sort svg{opacity:.35}.th-sort svg.on{opacity:1;color:var(--accent)}.pager{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px}.cell{display:flex;align-items:center;gap:10px;min-width:0}.cell strong{display:block;font-weight:650}.cell small{color:var(--muted);display:block}.progress{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .3s}.progress i.over{background:var(--warn)}.usage{display:flex;flex-direction:column;gap:6px}.usage>div:first-child{display:flex;justify-content:space-between;font-weight:600}.overlay{position:fixed;inset:0;background:#080b1280;z-index:100;display:grid;place-items:center;padding:16px;backdrop-filter:blur(2px)}.overlay.right{place-items:stretch end;padding:0}.modal{background:var(--surface);border-radius:16px;width:min(640px,100%);max-height:calc(100% - 16px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);border:1px solid var(--line)}.modal.small{width:min(440px,100%)}.modal.wide{width:min(860px,100%)}.modal header,.drawer header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}.modal-b{padding:20px;overflow-y:auto}.modal footer,.drawer footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);flex-wrap:wrap}.drawer{background:var(--surface);width:min(560px,100%);height:100%;display:flex;flex-direction:column;border-left:1px solid var(--line);box-shadow:var(--shadow-lg)}.drawer-b{padding:20px;overflow-y:auto;flex:1}.toaster{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{display:flex;align-items:center;gap:9px;background:var(--fg);color:var(--bg);padding:11px 15px;border-radius:12px;box-shadow:var(--shadow-lg);font-weight:600;animation:pop .2s;max-width:340px}.toast.err{background:var(--bad);color:#fff}@keyframes pop{0%{transform:translateY(8px);opacity:0}}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:40px 20px;color:var(--muted)}.empty strong{color:var(--fg)}.empty.err svg{color:var(--bad)}.skel{background:linear-gradient(90deg,var(--line-2),var(--surface-2),var(--line-2));background-size:200% 100%;border-radius:8px;animation:sh 1.2s infinite}@keyframes sh{to{background-position:-200% 0}}.tl{display:flex;flex-direction:column;gap:0}.tl-item{display:grid;grid-template-columns:22px 1fr;gap:10px}.tl-mark{display:flex;flex-direction:column;align-items:center}.tl-mark i{width:12px;height:12px;border-radius:50%;border:2px solid var(--line);background:var(--surface);margin-top:3px}.tl-mark u{flex:1;width:2px;background:var(--line);margin:2px 0}.tl-item.done .tl-mark i{background:var(--accent);border-color:var(--accent)}.tl-item.now .tl-mark i{box-shadow:0 0 0 4px var(--accent-soft)}.tl-item.done .tl-mark u{background:var(--accent)}.tl-body{padding-bottom:14px}.tl-body strong{font-weight:600}.tl-item:not(.done) .tl-body{color:var(--muted)}.day-group h4{font-family:var(--font);font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.upcoming{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2);align-items:center;width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left}.upcoming:last-child{border-bottom:0}.seg{display:inline-flex;background:var(--line-2);border-radius:10px;padding:3px}.seg button{border:0;background:none;padding:5px 12px;border-radius:8px;font-weight:600;color:var(--muted);font-size:12.5px}.seg button.on{background:var(--surface);color:var(--fg);box-shadow:var(--shadow)}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--surface)}.cal-h{padding:8px 10px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:650;background:var(--surface-2);border-bottom:1px solid var(--line)}.cal-d{min-height:118px;padding:6px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);display:flex;flex-direction:column;gap:4px;min-width:0}.cal-d:nth-child(7n){border-right:0}.cal-d.out{background:var(--surface-2)}.cal-d.out .dn{opacity:.45}.cal-d.drop{background:var(--accent-soft)}.dn{font-size:12px;font-weight:650;display:flex;justify-content:space-between;align-items:center}.dn.today span{background:var(--accent);color:var(--accent-fg);border-radius:99px;padding:0 7px}.dn button{opacity:0;border:0;background:none;color:var(--muted);padding:0;line-height:1}.cal-d:hover .dn button{opacity:1}.chip{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--accent);background:var(--surface-2);border-radius:6px;padding:3px 6px;font-size:11.5px;line-height:1.3;cursor:grab;overflow:hidden}.chip:hover{background:var(--accent-soft)}.chip b{display:block;font-weight:650;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chip small{color:var(--muted);display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.chip.published{opacity:.6}.cal-card{display:flex;gap:12px;padding:12px;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;background:var(--surface);width:100%;text-align:left}.cal-card:hover{background:var(--surface-2)}.kanban{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:14px;overflow-x:auto;align-items:start}.col{background:var(--line-2);border-radius:var(--r);padding:10px;min-height:200px;display:flex;flex-direction:column;gap:10px}.col.over{outline:2px dashed var(--accent)}.col-h{display:flex;justify-content:space-between;align-items:center;padding:2px 4px;font-weight:650}.tcard{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--shadow);cursor:grab;text-align:left;width:100%;display:flex;flex-direction:column;gap:8px}.tcard:active{cursor:grabbing}.tcard.late{border-color:var(--bad)}.bars{display:flex;flex-direction:column;gap:12px}.bar-row{display:grid;grid-template-columns:110px minmax(0,1fr) 30px;gap:10px;align-items:center;font-weight:600}.bar-row i{display:block;height:10px;border-radius:99px}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}svg text{fill:var(--muted);font-family:var(--font);font-size:11px}.folder{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);width:100%;text-align:left}.folder:hover,.folder.on{background:var(--accent-soft);border-color:transparent}.dropzone{border:1.5px dashed var(--line);border-radius:12px;padding:22px;text-align:center;color:var(--muted);background:var(--surface-2)}.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}.msg{max-width:80%;padding:9px 12px;border-radius:12px;background:var(--line-2)}.msg.mine{align-self:flex-end;background:var(--accent-soft)}.perm{display:grid;grid-template-columns:minmax(150px,1.2fr) repeat(6,minmax(70px,1fr));font-size:12.5px;min-width:720px}.perm>div{padding:9px 10px;border-bottom:1px solid var(--line-2);display:flex;align-items:center;justify-content:center}.perm>div:nth-child(7n+1){justify-content:flex-start;font-weight:600}.perm .h{font-weight:650;background:var(--surface-2);color:var(--muted);text-align:center;font-size:11.5px}.note{padding:12px 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line-2)}.login{min-height:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.login-art{background:var(--side);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;gap:32px}.login-art h2{font-size:clamp(28px,3.4vw,44px);line-height:1.05;font-weight:700;max-width:14ch}.login-form{padding:48px;display:flex;flex-direction:column;justify-content:center;gap:16px;max-width:520px;width:100%;margin:0 auto}.acct{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);width:100%;text-align:left}.acct:hover{background:var(--surface-2);border-color:var(--accent)}.portal-top{background:var(--side);color:#fff;padding:14px 24px;display:flex;align-items:center;gap:14px}.portal-top .brand{padding:0}@media(max-width:1200px){.g6,.g5{grid-template-columns:repeat(3,minmax(0,1fr))}.g21{grid-template-columns:1fr}}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:264px;z-index:90;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none;box-shadow:var(--shadow-lg)}.menu-btn{display:inline-grid}.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.login{grid-template-columns:1fr}.login-art{padding:28px}.topbar,.content{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}}@media(max-width:600px){.g6,.g5,.g4,.g3,.g2{grid-template-columns:1fr 1fr}.form,.g2.keep1{grid-template-columns:1fr}.stat b{font-size:21px}h1{font-size:22px}.cal-d{min-height:74px}.chip small{display:none}.login-form{padding:24px 16px}}@media(max-width:420px){.g3,.g2{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.print-only{display:none}@media print{@page{margin:16mm}html,body,#root,.shell,.main,.content{height:auto!important;overflow:visible!important;display:block!important;background:#fff!important}body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{position:absolute;left:0;top:0;width:100%;color:#111}.no-print,.sidebar,.topbar,.toaster{display:none!important}.print-only{display:flex!important;justify-content:space-between;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:12px}.card{box-shadow:none!important;break-inside:avoid}}details.help>summary{cursor:pointer;padding:14px 18px;font-weight:650;list-style:none;display:flex;justify-content:space-between;align-items:center}details.help>summary::-webkit-details-marker{display:none}details.help>summary:after{content:"+";font-size:20px;color:var(--muted)}details.help[open]>summary:after{content:"\2013"}details.help[open]>summary{border-bottom:1px solid var(--line)}kbd{background:var(--line-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;padding:1px 6px;font:600 12px var(--font, inherit)}.sync-pill{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;background:var(--line-2);color:var(--muted);display:inline-flex;gap:6px;align-items:center}.sync-pill.err{background:var(--bad-soft, #fde8e8);color:var(--bad)}
