:root{--bg:#fff;--surface:#fff;--soft:#f4f6fe;--soft-2:#eaeffd;--ink:#0b1220;--muted:#475672;--faint:#7c89a3;--line:#dfe5f3;--line-soft:#edf0f9;--brand:#2750ff;--brand-ink:#fff;--brand-soft:#e7ecff;--teal:#00a88a;--sky:#1597e5;--amber:#f59f00;--rose:#ef3f78;--violet:#7b4dff;--good:#0e9f55;--good-soft:#def7e9;--warn:#c76a00;--warn-soft:#fff0d2;--crit:#e0301e;--crit-soft:#fde5e1;--radius:14px;--shadow:0 1px 2px #1428780d, 0 6px 20px #1428780f;--font:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--font);font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%;margin:0}h1,h2,h3,h4,p{margin:0}h1{letter-spacing:-.02em;text-wrap:balance;font-size:24px;font-weight:800}h2{letter-spacing:-.01em;font-size:16px;font-weight:700}h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:700}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid color-mix(in srgb, var(--brand) 45%, white);outline-offset:2px;border-radius:6px}.muted{color:var(--muted)}.faint{color:var(--faint)}.num{font-variant-numeric:tabular-nums}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.nowrap{flex-wrap:nowrap}.sp{flex:1}.stack{flex-direction:column;gap:14px;display:flex}.grid{gap:14px;display:grid}.g-kpi{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.g-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}.shell{grid-template-columns:244px 1fr;min-height:100%;display:grid}.sidebar{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;gap:6px;height:100vh;padding:18px 14px;display:flex;position:sticky;top:0}.logo{letter-spacing:-.02em;align-items:center;gap:10px;padding:4px 8px 16px;font-size:18px;font-weight:800;display:flex}.logo-mark{background:var(--brand);border-radius:10px;flex:none;width:32px;height:32px;position:relative}.logo-mark:before,.logo-mark:after,.logo-mark i{content:"";border-radius:3px;position:absolute}.logo-mark:before{background:#fff;width:7px;height:16px;top:8px;left:7px}.logo-mark:after{background:#ffd166;width:8px;height:7px;top:8px;left:17px}.logo-mark i{background:#2ee6b6;width:8px;height:7px;top:17px;left:17px}.nav{flex-direction:column;gap:2px;display:flex}.nav a{color:var(--muted);border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-weight:600;text-decoration:none;display:flex}.nav a:hover{background:var(--soft);color:var(--ink)}.nav a.active{background:var(--brand-soft);color:var(--brand)}.nav svg{flex:none}.me-card{border:1px solid var(--line);border-radius:12px;align-items:center;gap:10px;margin-top:auto;padding:10px;display:flex}.avatar{color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:12px;font-weight:700;display:grid}.me-card .who{flex:1;min-width:0;line-height:1.25}.me-card .who b,.me-card .who span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.me-card .who span{color:var(--muted);font-size:12px}.main{min-width:0;padding:26px 30px 60px}.page{flex-direction:column;gap:20px;max-width:1320px;margin:0 auto;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 20px;display:flex}.page-head p{color:var(--muted);margin-top:4px}.topbar,.tabbar{display:none}.banner{z-index:30;color:#3d2b00;background:#ffe08a;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 16px;font-weight:600;display:flex;position:sticky;top:0}.banner .btn{background:#fff}.btn{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:9px 16px;font-weight:600;display:inline-flex}.btn:hover{background:var(--soft)}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);box-shadow:0 4px 14px color-mix(in srgb, var(--brand) 35%, transparent)}.btn.primary:hover{background:#1c3fe0}.btn.danger{color:var(--crit);border-color:color-mix(in srgb, var(--crit) 35%, white)}.btn.sm{border-radius:8px;min-height:32px;padding:5px 10px;font-size:13px}.btn.ghost{background:0 0;border-color:#0000}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.iconbtn{width:38px;padding:0}.seg{background:var(--soft);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;min-height:34px;padding:6px 14px;font-weight:600}.seg button.on{background:var(--surface);color:var(--brand);box-shadow:0 1px 3px #14287826}.seg.fill{width:100%;display:flex}.seg.fill button{flex:1;padding:6px 4px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>span{color:var(--muted);font-size:12px;font-weight:700}.input,.select,.textarea{border:1px solid var(--line);background:var(--surface);border-radius:10px;width:100%;min-height:42px;padding:9px 12px}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);outline:3px solid color-mix(in srgb, var(--brand) 22%, white)}.form-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;display:grid}.hint{color:var(--muted);font-size:12px}.error-note{background:var(--crit-soft);color:#8d1c10;border-radius:10px;padding:10px 14px;font-weight:600}.ok-note{background:var(--good-soft);color:#0a5f33;border-radius:10px;padding:10px 14px;font-weight:600}.info-note{background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.warn-note{background:var(--warn-soft);color:#7a4300;border-radius:10px;padding:10px 14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card>.card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.kpi{padding-top:20px;position:relative;overflow:hidden}.kpi:before{content:"";background:var(--accent,var(--brand));height:5px;position:absolute;top:0;left:0;right:0}.kpi .v{letter-spacing:-.02em;margin-top:6px;font-size:28px;font-weight:800;line-height:1.15}.kpi .s{color:var(--muted);margin-top:4px;font-size:12.5px}.pill{background:var(--soft-2);color:var(--muted);white-space:nowrap;border-radius:99px;align-items:center;gap:5px;padding:2px 10px;font-size:12px;font-weight:700;display:inline-flex}.pill.brand{background:var(--brand-soft);color:var(--brand)}.pill.good{background:var(--good-soft);color:#0a6e3b}.pill.warn{background:var(--warn-soft);color:#8f4d00}.pill.crit{background:var(--crit-soft);color:#a8200f}.pill.violet{color:#5b2fd6;background:#ece5ff}.pill.teal{color:#007a63;background:#d9f6ef}.dot{background:var(--c,var(--brand));border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.bar{background:var(--soft-2);border-radius:99px;min-width:70px;height:9px;display:flex;overflow:hidden}.bar>i{background:var(--brand);height:100%;display:block}.bar.good>i{background:var(--good)}.bar.warn>i{background:var(--amber)}.bar.crit>i{background:var(--crit)}.table-wrap{margin:0 -18px;padding:0 18px;overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:700}td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:12px 10px}tr:last-child td{border-bottom:0}td.r,th.r{text-align:right}tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:var(--soft)}.chips{flex-wrap:wrap;gap:6px;display:flex}.empty{text-align:center;color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);padding:28px}.spinner{border:3px solid var(--soft-2);border-top-color:var(--brand);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center{place-items:center;min-height:40vh;display:grid}.flag{letter-spacing:.04em;text-transform:uppercase;border-radius:6px;align-items:center;gap:4px;padding:1px 7px;font-size:11px;font-weight:800;display:inline-flex}.flag.urgent{background:var(--crit);color:#fff}.flag.high{background:var(--amber);color:#3b2500}.flag.normal{background:var(--soft-2);color:var(--muted)}.flag.low{background:var(--soft);color:var(--faint)}.overlay{z-index:60;background:#0b122073;justify-content:center;align-items:flex-start;padding:6vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:18px;flex-direction:column;gap:16px;width:min(680px,100%);padding:22px;display:flex;box-shadow:0 30px 80px #0b122059}.modal-head{align-items:center;gap:10px;display:flex}.toasts{z-index:80;flex-direction:column;gap:8px;width:min(440px,100vw - 24px);display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:#fff;box-shadow:var(--shadow);border-radius:12px;padding:12px 16px;font-weight:600}.toast.bad{background:#a8200f}.cal{--namecol:210px;--daycol:116px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:320px;max-height:calc(100vh - 210px);box-shadow:var(--shadow);overflow:auto}.cal-grid{width:max-content;min-width:100%;display:grid}.cal-corner,.cal-colhead{z-index:4;background:var(--surface);border-bottom:2px solid var(--line);padding:10px 10px 8px;position:sticky;top:0}.cal-corner{z-index:6;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;align-items:flex-end;font-size:12px;font-weight:700;display:flex;left:0}.cal-colhead{text-align:center;line-height:1.2}.cal-colhead b{font-size:15px;display:block}.cal-colhead small{color:var(--muted);font-weight:600}.cal-colhead.today{background:var(--brand);color:#fff;border-radius:0}.cal-colhead.today small{color:#dfe6ff}.cal-colhead .free{margin-top:2px;font-size:11px;font-weight:700;display:block}.cal-name{z-index:3;background:var(--surface);border-top:1px solid var(--line-soft);border-right:1px solid var(--line);flex-direction:column;justify-content:center;gap:6px;padding:10px 12px;display:flex;position:sticky;left:0}.cal-name button{all:unset;cursor:pointer;color:var(--ink);font-weight:700}.cal-name button:hover{color:var(--brand);text-decoration:underline}.cal-cell{border-top:1px solid var(--line-soft);border-left:1px solid var(--line-soft);flex-direction:column;gap:4px;padding:8px 6px 6px;display:flex}.cal-cell.today{background:color-mix(in srgb, var(--brand) 5%, white)}.cal-cell.weekstart,.cal-colhead.weekstart{border-left:2px solid var(--line)}.dayframe{border:1px solid var(--line);background-color:#fff;background-image:repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--ph) - 1px), var(--line-soft) calc(var(--ph) - 1px), var(--line-soft) var(--ph));border-radius:9px;width:100%;position:relative;overflow:hidden}.dayframe .nowork{background:repeating-linear-gradient(135deg,#eef1f8 0 6px,#f7f8fc 6px 12px);position:absolute;bottom:0;left:0;right:0}.dayframe .offday{z-index:2;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;background:repeating-linear-gradient(135deg,#e9edf8 0 7px,#f4f6fc 7px 14px);place-items:center;font-size:12px;font-weight:800;display:grid;position:absolute;inset:0}.dayframe .capline{border-top:2px dashed color-mix(in srgb, var(--ink) 35%, white);z-index:3;pointer-events:none;height:0;position:absolute;left:0;right:0}.blk{color:var(--ink);cursor:pointer;background:color-mix(in srgb, var(--c) 18%, white);border-left:4px solid var(--c);z-index:1;text-align:left;border-radius:7px;justify-content:space-between;align-items:flex-start;gap:6px;padding:3px 6px;font-size:11.5px;line-height:1.25;display:flex;position:absolute;left:3px;right:3px;overflow:hidden;box-shadow:0 1px #0000000a}.blk:hover{background:color-mix(in srgb, var(--c) 28%, white)}.blk.masked{cursor:default;color:var(--muted);background:repeating-linear-gradient(135deg,#e3e8f5 0 6px,#eef1f9 6px 12px);border-left-color:#9aa6c0}.blk.over{box-shadow:inset 0 0 0 2px var(--crit);background:color-mix(in srgb, var(--crit) 10%, white)}.blk.urgent,.blk.high{padding-right:16px}.blk.urgent:after,.blk.high:after{content:"";border-style:solid;border-width:0 14px 14px 0;border-color:transparent var(--tag) transparent transparent;position:absolute;top:0;right:0}.blk.urgent{--tag:var(--crit)}.blk.high{--tag:var(--amber)}.blk.compact{align-items:center;padding-top:0;padding-bottom:0;font-size:10.5px;line-height:1.1}.blk.compact .t{-webkit-line-clamp:1}.blk .t{text-overflow:ellipsis;-webkit-line-clamp:var(--lines,2);word-break:break-word;-webkit-box-orient:vertical;font-weight:700;display:-webkit-box;overflow:hidden}.blk .h{white-space:nowrap;font-weight:800}.blk .pf{position:absolute;bottom:3px;right:4px}.cal-foot{color:var(--muted);justify-content:space-between;padding:0 2px;font-size:11px;font-weight:700;display:flex}.cal-foot.good{color:var(--good)}.cal-foot.warn{color:var(--warn)}.cal-foot.crit{color:var(--crit)}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:14px 18px;font-size:12.5px;display:flex}.legend i{vertical-align:-3px;border-radius:4px;width:14px;height:14px;margin-right:6px;display:inline-block}.week-label{text-align:center;min-width:150px;font-weight:700}.pv-weeks{flex-direction:column;gap:18px;display:flex}.pv-week{grid-template-columns:46px repeat(5,minmax(118px,1fr));gap:8px;min-width:700px;display:grid}.ruler{margin-top:62px;position:relative}.ruler span{color:var(--faint);font-size:11px;font-weight:600;position:absolute;right:6px;transform:translateY(-50%)}.pv-day{flex-direction:column;gap:8px;display:flex}.pv-head{text-align:center;background:var(--soft);border-radius:10px;padding:8px 4px;line-height:1.25}.pv-head.today{background:var(--brand);color:#fff}.pv-head b{display:block}.pv-head small{opacity:.85;font-weight:600}.pv-head .free{font-size:11px;font-weight:800}.catbar{background:var(--soft-2);border:1px solid var(--line);border-radius:8px;height:22px;display:flex;position:relative;overflow:hidden}.catbar i{background:var(--c);border-right:2px solid #fff;height:100%;display:block}.catbar .over{background:repeating-linear-gradient(135deg, var(--crit) 0 5px, #ff8a7c 5px 10px)}.entry{border-bottom:1px solid var(--line-soft);grid-template-columns:auto 1fr auto auto;align-items:center;gap:12px;padding:12px 4px;display:grid}.entry:last-child{border-bottom:0}.entry .ttl{overflow-wrap:anywhere;min-width:0;font-weight:700}.entry .dur{text-align:right;min-width:52px;font-size:15px;font-weight:800}.catpick{flex-wrap:wrap;gap:8px;display:flex}.catpick button{border:1.5px solid var(--line);cursor:pointer;background:#fff;border-radius:99px;align-items:center;gap:7px;min-height:38px;padding:7px 12px;font-weight:700;display:inline-flex}.catpick button.on{border-color:var(--c);background:color-mix(in srgb, var(--c) 12%, white)}.sugg{border:1.5px dashed var(--line);background:var(--soft);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex}.weekbars{grid-template-columns:repeat(7,1fr);align-items:end;gap:10px;height:190px;display:grid}.weekbars .col{flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.weekbars .stackcol{background:var(--soft);border-radius:8px;flex-direction:column-reverse;width:100%;max-width:54px;display:flex;overflow:hidden}.weekbars .stackcol i{background:var(--c);border-top:2px solid #fff;display:block}.weekbars .col.today b{color:var(--brand)}.weekbars small{color:var(--muted);font-size:11px;font-weight:600}.login{grid-template-columns:1.05fr 1fr;min-height:100%;display:grid}.login-brand{color:#fff;background:linear-gradient(135deg,#2750ff 0%,#5b3df5 55%,#8a4dff 100%);flex-direction:column;justify-content:space-between;gap:30px;padding:56px;display:flex;position:relative;overflow:hidden}.login-brand h2{letter-spacing:-.03em;max-width:460px;font-size:36px;font-weight:800;line-height:1.12}.login-brand p{opacity:.92;max-width:440px;font-size:16px}.mini-cal{grid-template-columns:repeat(5,64px);align-items:start;gap:10px;margin-top:8px;display:grid}.mini-cal div{background:#ffffff2e;border-radius:12px;flex-direction:column;gap:4px;height:150px;padding:6px;display:flex}.mini-cal i{background:var(--c);border-radius:6px;display:block}.login-form{place-items:center;padding:32px;display:grid}.login-form form{flex-direction:column;gap:16px;width:min(400px,100%);display:flex}@media (width<=940px){.shell{grid-template-columns:1fr;padding-bottom:76px}.sidebar{display:none}.main{padding:18px 16px 40px}h1{font-size:21px}.topbar{z-index:25;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#fffffff5;align-items:center;gap:10px;padding:10px 16px;display:flex;position:sticky;top:0}.topbar .logo{padding:0;font-size:16px}.topbar .logo-mark{width:28px;height:28px}.tabbar{z-index:40;background:var(--surface);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom));grid-auto-columns:1fr;grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--muted);border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;font-size:11px;font-weight:700;text-decoration:none;display:flex}.tabbar a.active{color:var(--brand);background:var(--brand-soft)}.hide-sm{display:none}.cal{--namecol:108px;--daycol:112px;max-height:none}.cal-name{gap:4px;padding:8px}.cal-name .bar,.cal-name .hint,.cal-name .avatar{display:none}.cal-name .chips .pill{padding:1px 7px;font-size:10.5px}.login{grid-template-columns:1fr}.login-brand{display:none}.card{padding:14px}.table-wrap{margin:0 -14px;padding:0 14px}.entry{grid-template-columns:auto 1fr auto}.entry .actions{grid-column:1/-1}.modal{border-radius:16px;padding:16px}.overlay{padding:12px}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2s}}
