@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-sans-latin-ext-400-normal-Q_nF8v4l.woff2) format("woff2"),url(/assets/instrument-sans-latin-ext-400-normal-r32jotim.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-sans-latin-400-normal-DRC__1Mx.woff2) format("woff2"),url(/assets/instrument-sans-latin-400-normal-D1W7dsQl.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/instrument-sans-latin-ext-500-normal-CTEe1bJa.woff2) format("woff2"),url(/assets/instrument-sans-latin-ext-500-normal-CAxz3nsc.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/instrument-sans-latin-500-normal-Dk9ku72i.woff2) format("woff2"),url(/assets/instrument-sans-latin-500-normal-Z6ESRlEs.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/instrument-sans-latin-ext-600-normal-BsaQcF38.woff2) format("woff2"),url(/assets/instrument-sans-latin-ext-600-normal-DMks36a2.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/instrument-sans-latin-600-normal-B7fBEWYG.woff2) format("woff2"),url(/assets/instrument-sans-latin-600-normal-B9e8oLYv.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f5f4f0;--surface: #ffffff;--surface-2: #fafaf7;--list: #ebe9e3;--chip: #ddd9d2;--ink: #16171b;--ink-2: #3e4048;--muted: #5b5d66;--muted-2: #6b6d76;--placeholder: #8b8d96;--line: #e6e4dd;--line-2: #d9d6ce;--hover: rgba(22, 23, 27, .05);--accent: #2f4bff;--accent-ink: #ffffff;--accent-soft: color-mix(in srgb, var(--accent) 12%, var(--surface));--accent-soft-ink: color-mix(in srgb, var(--accent) 75%, var(--ink));--side: #16171b;--side-2: #1f2127;--side-3: #26282f;--side-input: #22242a;--side-text: #c9cad1;--side-muted: #8b8d96;--danger: #c62828;--danger-soft: #ffe1e1;--danger-ink: #a11b1b;--warn-soft: #fff1c7;--warn-ink: #8a4b00;--ok: #2e9e5b;--ok-soft: #d8f0df;--ok-ink: #1c5e33;--shadow-card: 0 1px 2px rgba(22, 23, 27, .05);--shadow-pop: 0 18px 48px -12px rgba(22, 23, 27, .35);--font-display: "Bricolage Grotesque Variable", "Segoe UI", system-ui, sans-serif;--font-body: "Instrument Sans", "Helvetica Neue", system-ui, sans-serif;color-scheme:light}:root[data-resolved=dark]{--bg: #0f1013;--surface: #1c1d22;--surface-2: #17181c;--list: #15161a;--chip: #2a2c33;--ink: #f2f2f4;--ink-2: #c9cad1;--muted: #a2a4ad;--muted-2: #9a9ca5;--placeholder: #6f717b;--line: #2a2c33;--line-2: #373a43;--hover: rgba(255, 255, 255, .07);--accent-soft-ink: color-mix(in srgb, var(--accent) 45%, #ffffff);--side: #0a0a0c;--side-2: #17181c;--side-3: #202228;--danger-soft: #3a1b1b;--danger-ink: #ffb3b3;--warn-soft: #3a2f10;--warn-ink: #ffd27a;--ok-soft: #173424;--ok-ink: #8fe0b0;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-pop: 0 18px 48px -12px rgba(0, 0, 0, .7);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-decoration:none}h1,h2,h3,h4,p{margin:0}input::placeholder,textarea::placeholder{color:var(--placeholder)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.display{font-family:var(--font-display);letter-spacing:-.03em}.muted{color:var(--muted)}.row{display:flex;align-items:center;gap:8px}.col{display:flex;flex-direction:column;gap:8px}.grow{flex:1;min-width:0}.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface);color:var(--ink);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap;transition:filter .12s,background .12s}.btn:hover{filter:brightness(.97)}.btn.lg{height:44px;padding:0 18px}.btn.xl{height:52px;border-radius:14px;font-size:15px}.btn.sm{height:34px;padding:0 12px;border-radius:9px;font-size:13px}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;box-shadow:0 6px 16px -6px color-mix(in srgb,var(--accent) 60%,transparent)}.btn.dark{background:var(--ink);color:var(--bg);border-color:transparent}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--hover);filter:none}.btn.danger{background:var(--danger);color:#fff;border-color:transparent}.btn.danger-ghost{color:var(--danger-ink);background:transparent;border-color:transparent}.btn.danger-ghost:hover{background:var(--danger-soft);filter:none}.btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border:0;border-radius:10px;background:transparent;color:var(--muted);position:relative}.icon-btn:hover{background:var(--hover);color:var(--ink)}.icon-btn.sm{width:28px;height:28px;border-radius:8px}.icon-btn.boxed{width:44px;height:44px;border:1px solid var(--line-2);background:var(--surface);border-radius:12px}.field{display:flex;flex-direction:column;gap:8px}.field>label,.label{font-size:14px;font-weight:600}.input,.textarea,.select{width:100%;min-height:44px;padding:0 14px;border:1px solid var(--line-2);border-radius:12px;background:var(--surface);color:var(--ink);outline:none}.input:focus,.textarea:focus,.select:focus{border:1px solid var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 16%,transparent)}.input.sm{min-height:36px;border-radius:10px;font-size:14px}.textarea{padding:12px 14px;resize:vertical;line-height:1.5}.hint{font-size:12px;color:var(--muted)}.error-box{padding:10px 14px;border-radius:12px;background:var(--danger-soft);color:var(--danger-ink);font-size:13px;font-weight:500}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--accent-soft);color:var(--accent-soft-ink)}.pill.warn{background:var(--warn-soft);color:var(--warn-ink)}.pill.danger{background:var(--danger-soft);color:var(--danger-ink)}.pill.ok{background:var(--ok-soft);color:var(--ok-ink)}.pill.gray{background:var(--list);color:var(--ink-2)}.switch{position:relative;width:40px;height:24px;flex:none;border-radius:999px;background:var(--line-2);transition:background .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:0 1px 2px #00000040;transition:transform .15s}.switch.on{background:var(--accent)}.switch.on:after{transform:translate(16px)}.switch input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer}.kbd{font-size:11px;border:1px solid var(--line-2);border-radius:6px;padding:1px 6px;color:var(--muted-2);background:var(--surface)}.avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:999px;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.avatar-stack{display:flex;align-items:center}.avatar-stack>.avatar{border:2px solid var(--stack-border, var(--surface))}.avatar-stack>.avatar+.avatar{margin-left:-7px}.lbl{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.lbl.dot{width:40px;height:8px;padding:0}.lbl-blue{background:#e3e8ff;color:#2433a8}.lbl-orange{background:#ffe6d5;color:#9a3a0a}.lbl-purple{background:#eee4ff;color:#5b2db0}.lbl-pink{background:#ffe1ec;color:#9b1c4d}.lbl-red{background:#ffe1e1;color:#a11b1b}.lbl-green{background:#d8f0df;color:#1c5e33}.lbl-yellow{background:#fff1c7;color:#8a4b00}.lbl-teal{background:#cff3ee;color:#0b5f55}.lbl-gray{background:#e2e0d9;color:#3e4048}:root[data-resolved=dark] .lbl-blue{background:#232a57;color:#b9c4ff}:root[data-resolved=dark] .lbl-orange{background:#4a2a14;color:#ffc7a1}:root[data-resolved=dark] .lbl-purple{background:#34244f;color:#d6bfff}:root[data-resolved=dark] .lbl-pink{background:#4a1f31;color:#ffb9d3}:root[data-resolved=dark] .lbl-red{background:#4a2020;color:#ffb3b3}:root[data-resolved=dark] .lbl-green{background:#1b3a29;color:#9fe3b9}:root[data-resolved=dark] .lbl-yellow{background:#43361a;color:#ffd98a}:root[data-resolved=dark] .lbl-teal{background:#123a35;color:#8fe8dc}:root[data-resolved=dark] .lbl-gray{background:#33353c;color:#d3d4da}.app{display:flex;min-height:100%;height:100%}.sidebar{width:256px;flex:none;background:var(--side);color:var(--side-text);padding:20px 16px;display:flex;flex-direction:column;gap:22px;overflow-y:auto;z-index:40}.logo{display:flex;align-items:center;gap:10px;padding:4px 8px}.logo-mark{width:32px;height:32px;border-radius:10px;background:var(--accent);display:flex;align-items:flex-start;justify-content:center;gap:3px;padding:8px 7px;flex:none}.logo-mark i{width:4px;border-radius:2px;background:#fff}.logo-name{font-family:var(--font-display);font-weight:700;font-size:20px;color:#fff;letter-spacing:-.02em}.side-search{display:flex;align-items:center;gap:8px;height:40px;padding:0 10px 0 12px;border:0;width:100%;background:var(--side-input);border-radius:10px;color:#9a9ca5;text-align:left}.side-search span.grow{font-size:14px}.side-search .kbd{background:transparent;border-color:#34363d;color:var(--side-muted)}.side-nav{display:flex;flex-direction:column;gap:2px}.side-link{display:flex;align-items:center;gap:12px;height:40px;padding:0 12px;border-radius:10px;color:var(--side-text);font-size:14px;font-weight:500;border:0;background:transparent;width:100%;text-align:left}.side-link:hover{background:var(--side-2);color:#fff}.side-link.active{background:var(--side-3);color:#fff}.side-link .badge{font-size:11px;font-weight:600;color:#fff;background:var(--accent);border-radius:999px;padding:2px 7px}.side-title{display:flex;align-items:center;justify-content:space-between;padding:0 12px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--side-muted)}.side-title button{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--side-text);display:flex;align-items:center;justify-content:center}.side-title button:hover{background:var(--side-2)}.side-board{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;border-radius:10px;color:var(--side-text);font-size:14px}.side-board:hover{background:var(--side-2);color:#fff}.side-board.active{background:var(--side-2);color:#fff;box-shadow:inset 2px 0 0 var(--accent)}.side-board .sq{width:10px;height:10px;border-radius:3px;flex:none}.side-user{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;background:var(--side-2)}.side-user .name{font-size:14px;font-weight:600;color:#fff}.side-user .role{font-size:12px;color:#9a9ca5}.side-user .icon-btn{color:var(--side-text)}.side-user .icon-btn:hover{background:var(--side-3);color:#fff}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar-mobile,.scrim{display:none}@media(max-width:900px){.sidebar{position:fixed;inset:0 auto 0 0;transform:translate(-100%);transition:transform .2s;width:280px}.sidebar.open{transform:none}.scrim.open{display:block;position:fixed;inset:0;background:#00000080;z-index:30}.topbar-mobile{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--side);color:#fff}.app{flex-direction:column}}.page{flex:1;overflow-y:auto;padding:40px 40px 56px;display:flex;flex-direction:column;gap:36px}@media(max-width:700px){.page{padding:24px 16px 40px}}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px}.page-head h1{font-family:var(--font-display);font-weight:700;font-size:40px;letter-spacing:-.035em;line-height:1.05}.section-title{font-size:15px;font-weight:600}.cluster{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.icon-bell-dot{position:absolute;top:6px;right:6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.grid-boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}.board-tile{display:flex;flex-direction:column;border-radius:18px;background:var(--surface);border:1px solid var(--line);overflow:hidden;color:var(--ink);box-shadow:var(--shadow-card);position:relative;transition:transform .15s,box-shadow .15s}.board-tile:hover{transform:translateY(-2px);box-shadow:0 12px 28px -14px #16171b4d}.board-tile .cover{height:112px;padding:16px;display:flex;gap:8px;align-items:flex-start}.board-tile .cover i{flex:1;border-radius:8px;background:#ffffff4d}.board-tile .body{padding:16px;display:flex;flex-direction:column;gap:14px}.board-tile .star{position:absolute;top:10px;right:10px;background:#ffffffd9;color:#16171b;border-radius:10px}.board-tile .star.on{color:#e0a100}.board-tile .star:hover{background:#fff}.tile-new{min-height:228px;border-radius:18px;border:1.5px dashed var(--line-2);background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;font-size:14px;font-weight:600}.tile-new:hover{background:var(--hover)}.tile-new .plus{width:44px;height:44px;border-radius:14px;background:var(--list);color:var(--ink);display:flex;align-items:center;justify-content:center}.table{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow-x:auto}.trow{display:grid;gap:16px;padding:14px 20px;align-items:center;font-size:14px;border-bottom:1px solid var(--line);min-width:640px}.trow:last-child{border-bottom:0}.trow.head{padding:12px 20px;font-size:12px;font-weight:600;color:var(--muted)}.board-wrap{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--bg)}.board-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;padding:24px 32px 14px}.crumbs{display:flex;gap:6px;font-size:13px;color:var(--muted)}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--ink)}.board-title{font-family:var(--font-display);font-weight:700;font-size:32px;letter-spacing:-.03em;background:transparent;border:0;padding:0 4px;margin-left:-4px;border-radius:8px;color:var(--ink);max-width:100%;text-align:left}button.board-title:hover{background:var(--hover)}input.board-title{outline:2px solid var(--accent);width:min(560px,100%)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:0 32px 16px;border-bottom:1px solid var(--line)}.seg{display:flex;gap:4px;padding:4px;background:var(--list);border-radius:12px}.seg button{height:34px;padding:0 14px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:13px;font-weight:500;display:flex;align-items:center;gap:6px}.seg button[aria-selected=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #16171b1a}.search-box{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--muted-2);width:240px}.search-box input{border:0;outline:0;background:transparent;flex:1;min-width:0;font-size:14px}.btn-tool{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border:1px solid var(--line-2);border-radius:10px;background:var(--surface);color:var(--ink-2);font-size:14px;font-weight:500}.btn-tool.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.board-scroll{flex:1;overflow:auto;padding:24px 32px 32px;min-height:0}.lists{display:flex;align-items:flex-start;gap:16px;width:max-content;min-height:100%}.list{width:296px;flex:none;background:var(--list);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:10px;max-height:100%}.list.dragging{opacity:.5}.list-head{display:flex;align-items:center;justify-content:space-between;padding:2px 2px 4px 4px;cursor:grab;gap:4px}.list-head h2{font-size:14px;font-weight:600;margin:0}.list-head .dot{width:8px;height:8px;border-radius:999px;flex:none}.count{font-size:12px;font-weight:600;color:var(--muted);background:var(--chip);border-radius:999px;padding:1px 8px}.count.over{background:var(--danger-soft);color:var(--danger-ink)}.list-title-input{flex:1;min-width:0;font-size:14px;font-weight:600;border:0;outline:2px solid var(--accent);border-radius:6px;padding:2px 6px;background:var(--surface)}.cards{display:flex;flex-direction:column;gap:10px;overflow-y:auto;min-height:12px;padding:2px;margin:-2px}.card{background:var(--surface);border-radius:12px;border:1px solid var(--line);box-shadow:var(--shadow-card);overflow:hidden;display:flex;flex-direction:column;text-align:left;width:100%;padding:0;color:var(--ink);position:relative;touch-action:manipulation}.card:hover{border-color:var(--line-2)}.card.ghost{opacity:.35}.card.overlay{transform:rotate(-2deg);box-shadow:0 12px 28px -10px #16171b73;outline:2px solid var(--accent);outline-offset:-1px;cursor:grabbing}.card-cover{height:84px;background-size:cover;background-position:center}.card-body{padding:14px;display:flex;flex-direction:column;gap:10px}.card-title{font-size:14px;font-weight:500;line-height:1.4;overflow-wrap:anywhere}.card-labels{display:flex;gap:6px;flex-wrap:wrap}.card-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}.meta-items{display:flex;gap:10px;align-items:center;color:var(--muted-2);font-size:12px;flex-wrap:wrap}.meta{display:inline-flex;gap:4px;align-items:center}.due{display:inline-flex;gap:4px;align-items:center;font-size:12px;font-weight:600;border-radius:6px;padding:3px 7px;background:var(--list);color:var(--muted-2);border:0}.due.soon{background:var(--warn-soft);color:var(--warn-ink)}.due.late{background:var(--danger-soft);color:var(--danger-ink)}.due.done{background:var(--ok-soft);color:var(--ok-ink)}.due.plain{background:transparent;padding:0;font-weight:400;color:var(--muted-2)}.progress{height:6px;border-radius:999px;background:var(--list);overflow:hidden}.progress>div{height:100%;border-radius:999px;background:var(--accent);transition:width .2s}.progress.full>div{background:var(--ok)}.card.is-done{background:var(--surface-2)}.card.is-done .card-title{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--placeholder)}.check-circle{width:20px;height:20px;flex:none;border-radius:999px;border:2px solid var(--line-2);background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;padding:0}.check-circle:hover{border-color:var(--ok)}.check-circle.on{background:var(--ok);border-color:var(--ok)}.add-card{display:flex;align-items:center;gap:8px;height:40px;padding:0 10px;border:0;background:transparent;border-radius:10px;color:var(--muted);font-size:14px;font-weight:500;width:100%;text-align:left}.add-card:hover{background:var(--hover);color:var(--ink)}.add-list{width:296px;flex:none;min-height:56px;border:1.5px dashed var(--line-2);border-radius:16px;background:transparent;color:var(--muted);font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px}.add-list:hover{background:var(--hover)}.composer{display:flex;flex-direction:column;gap:8px}.composer textarea{width:100%;border:0;outline:2px solid var(--accent);border-radius:12px;padding:12px 14px;resize:none;background:var(--surface);font-size:14px;line-height:1.4;box-shadow:var(--shadow-card)}.drop-hint{height:64px;border-radius:12px;border:2px dashed color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.list-view{flex:1;overflow:auto;padding:24px 32px 40px}.lv-group{margin-bottom:24px}.lv-group h3{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;margin-bottom:10px}.lv-row{display:grid;grid-template-columns:28px minmax(200px,3fr) minmax(120px,1.5fr) 120px 100px 90px;gap:12px;align-items:center;padding:10px 16px;background:var(--surface);border:1px solid var(--line);border-top:0;min-width:760px;width:100%;text-align:left;border-left:1px solid var(--line);border-right:1px solid var(--line);font-size:14px}.lv-row:first-of-type{border-top:1px solid var(--line);border-radius:12px 12px 0 0}.lv-row:last-of-type{border-radius:0 0 12px 12px}.lv-row:only-of-type{border-radius:12px}button.lv-row:hover{background:var(--surface-2)}.cal{flex:1;overflow:auto;padding:20px 32px 32px;display:flex;flex-direction:column;gap:14px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface);min-width:800px}.cal-dow{padding:8px 10px;font-size:12px;font-weight:600;color:var(--muted);background:var(--surface-2);border-bottom:1px solid var(--line)}.cal-day{min-height:118px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:4px}.cal-day:nth-child(7n){border-right:0}.cal-day.other{background:var(--surface-2);color:var(--placeholder)}.cal-day .num{font-size:12px;font-weight:600;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:999px}.cal-day.today .num{background:var(--accent);color:#fff}.cal-card{font-size:12px;font-weight:500;padding:3px 7px;border-radius:6px;border:0;text-align:left;background:var(--accent-soft);color:var(--accent-soft-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.cal-card.done{background:var(--ok-soft);color:var(--ok-ink);text-decoration:line-through}.cal-card.late{background:var(--danger-soft);color:var(--danger-ink)}.overlay{position:fixed;inset:0;z-index:100;background:#16171b8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto}.modal{width:100%;max-width:600px;background:var(--surface);border-radius:24px;box-shadow:0 40px 80px -24px #00000080;display:flex;flex-direction:column;overflow:hidden;animation:pop .16s ease-out}.modal.wide{max-width:880px}.modal.small{max-width:440px}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.985)}}.modal-head{display:flex;align-items:flex-start;gap:14px;padding:24px 24px 18px}.modal-head h2{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:-.025em}.modal-icon{width:44px;height:44px;flex:none;border-radius:14px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}.modal-body{padding:0 24px 24px;display:flex;flex-direction:column;gap:20px}.modal-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--line);background:var(--surface-2)}.popover{position:fixed;z-index:120;min-width:200px;max-width:calc(100vw - 16px);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-pop);padding:6px;animation:pop .12s ease-out;max-height:calc(100vh - 16px);overflow-y:auto}.popover.padded{padding:14px}.menu-item{display:flex;align-items:center;gap:10px;width:100%;min-height:38px;padding:0 10px;border:0;border-radius:9px;background:transparent;font-size:14px;text-align:left;color:var(--ink)}.menu-item:hover,.menu-item.focus{background:var(--hover)}.menu-item.danger{color:var(--danger-ink)}.menu-sep{height:1px;background:var(--line);margin:4px 2px}.menu-title{padding:6px 10px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.toast-host{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;font-size:14px;font-weight:500;box-shadow:var(--shadow-pop);display:flex;align-items:center;gap:12px;animation:pop .16s ease-out}.toast.error{background:var(--danger);color:#fff}.toast button{background:transparent;border:0;color:inherit;font-weight:700;text-decoration:underline}.card-modal{max-width:920px;background:var(--bg)}.cm-cover{height:112px;background-size:cover;background-position:center;position:relative}.cm-head{padding:22px 28px 0;display:flex;gap:12px;align-items:flex-start}.cm-title{width:100%;font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:-.025em;line-height:1.2;border:0;background:transparent;resize:none;padding:2px 6px;margin-left:-6px;border-radius:8px;overflow:hidden}.cm-title:focus{outline:2px solid var(--accent);background:var(--surface)}.cm-grid{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:24px;padding:16px 28px 28px}@media(max-width:760px){.cm-grid{grid-template-columns:1fr}}.cm-main{display:flex;flex-direction:column;gap:24px;min-width:0}.cm-side{display:flex;flex-direction:column;gap:6px;align-content:start}.cm-side h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 0 2px}.side-btn{display:flex;align-items:center;gap:10px;height:38px;padding:0 12px;border:0;border-radius:10px;background:var(--list);color:var(--ink);font-size:14px;font-weight:500;width:100%;text-align:left}.side-btn:hover{filter:brightness(.96)}.side-btn.danger{color:var(--danger-ink)}.cm-section>.cm-h{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;margin-bottom:10px}.cm-facts{display:flex;flex-wrap:wrap;gap:18px}.cm-fact{display:flex;flex-direction:column;gap:6px}.cm-fact>span.k{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.desc-box{display:block;min-height:80px;padding:12px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line);width:100%;text-align:left}.desc-box.empty{color:var(--muted);background:var(--list);border-color:transparent}.md{font-size:14px;line-height:1.6;overflow-wrap:anywhere}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p,.md ul,.md ol,.md pre,.md blockquote{margin:0 0 10px}.md ul,.md ol{padding-left:22px}.md code{background:var(--list);padding:1px 5px;border-radius:5px;font-size:13px}.md pre{background:var(--list);padding:10px 12px;border-radius:10px;overflow-x:auto}.md pre code{background:transparent;padding:0}.md blockquote{border-left:3px solid var(--line-2);padding-left:12px;color:var(--muted)}.md a{text-decoration:underline}.md h1,.md h2,.md h3{font-size:16px;margin:12px 0 6px}.md img{max-width:100%}.cl{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:14px;background:var(--surface);border:1px solid var(--line)}.cl-item{display:flex;align-items:flex-start;gap:10px;padding:4px 6px;border-radius:8px}.cl-item:hover{background:var(--hover)}.cl-item input[type=checkbox]{width:18px;height:18px;margin-top:1px;accent-color:var(--accent)}.cl-item.done .t{color:var(--muted);text-decoration:line-through}.cl-item .acts{opacity:0}.cl-item:hover .acts,.cl-item:focus-within .acts{opacity:1}.attach{display:flex;gap:12px;align-items:center;padding:8px;border-radius:12px;background:var(--surface);border:1px solid var(--line)}.attach .thumb{width:72px;height:52px;flex:none;border-radius:8px;background:var(--list) center/cover no-repeat;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}.comment{display:flex;gap:10px}.comment .bubble{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;flex:1;min-width:0}.act-line{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink-2)}.dropzone-active{outline:2px dashed var(--accent);outline-offset:-6px}.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{width:32px;height:32px;border-radius:10px;border:2px solid transparent;display:flex;align-items:center;justify-content:center;color:#fff;padding:0}.swatch.on{border-color:var(--ink)}.label-row{display:flex;align-items:center;gap:8px}.label-row .lbl-pick{flex:1;height:34px;border-radius:8px;border:0;font-size:13px;font-weight:600;text-align:left;padding:0 12px;display:flex;align-items:center;justify-content:space-between}.palette{position:fixed;z-index:150;inset:0;background:#16171b80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}.palette-box{width:min(620px,calc(100vw - 24px));background:var(--surface);border-radius:18px;box-shadow:var(--shadow-pop);overflow:hidden;animation:pop .14s ease-out}.palette-box input{width:100%;height:56px;border:0;outline:0;padding:0 20px;background:transparent;font-size:16px;border-bottom:1px solid var(--line)}.palette-list{max-height:50vh;overflow-y:auto;padding:8px}.palette-group{padding:8px 10px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.auth-split{min-height:100%;display:flex;flex-wrap:wrap;background:var(--bg)}.auth-left{flex:1 1 520px;display:flex;flex-direction:column;padding:40px 56px;gap:40px}@media(max-width:700px){.auth-left{padding:28px 20px}}.auth-form{flex:1;display:flex;flex-direction:column;justify-content:center;gap:26px;width:100%;max-width:400px;margin:0 auto}.auth-form h1{font-family:var(--font-display);font-weight:700;font-size:44px;line-height:1.05;letter-spacing:-.035em}.auth-right{flex:1 1 560px;padding:16px;display:flex}@media(max-width:900px){.auth-right{display:none}}.auth-panel{flex:1;min-height:560px;border-radius:28px;background-color:#16171b;background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px);background-size:22px 22px;padding:56px;display:flex;flex-direction:column;justify-content:space-between;gap:48px;overflow:hidden;color:#fff}.auth-panel h2{font-family:var(--font-display);font-weight:600;font-size:40px;line-height:1.1;letter-spacing:-.03em;max-width:520px}.dots-bg{min-height:100%;display:flex;flex-direction:column;background-color:var(--bg);background-image:radial-gradient(rgba(127,127,127,.18) 1px,transparent 1px);background-size:22px 22px;padding:32px 16px 48px;gap:32px}.join-card{width:100%;max-width:480px;background:var(--surface);border-radius:28px;border:1px solid var(--line);box-shadow:0 30px 60px -30px #16171b4d;overflow:hidden}.empty{padding:40px 20px;text-align:center;color:var(--muted);border:1.5px dashed var(--line-2);border-radius:16px}.loader{display:flex;align-items:center;justify-content:center;height:100%;min-height:200px;color:var(--muted)}.color-grid{display:flex;gap:8px;flex-wrap:wrap}.help-grid{display:grid;grid-template-columns:auto 1fr;gap:10px 16px;align-items:center}@media print{.sidebar,.toolbar,.topbar-mobile{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.card .card-check{position:absolute;top:8px;right:8px;z-index:2;background:var(--surface);width:20px;height:20px;opacity:0;transition:opacity .12s}.card:hover .card-check,.card:focus-within .card-check{opacity:1}@media(hover:none){.card .card-check{opacity:.6}}.lbl-pick{cursor:pointer}.cm-section:empty{display:none}.skip-link{position:absolute;left:8px;top:-48px;z-index:300;background:var(--accent);color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;transition:top .15s}.skip-link:focus{top:8px}.main:focus{outline:none}.card.selected{outline:2px solid var(--accent);outline-offset:-1px}.sel-box{position:absolute;top:8px;left:8px;z-index:3;width:20px;height:20px;accent-color:var(--accent)}.bulk-bar{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:16px;box-shadow:var(--shadow-pop);max-width:calc(100vw - 24px)}.bulk-bar .btn{background:transparent;color:inherit;border-color:color-mix(in srgb,var(--bg) 30%,transparent);height:34px}.badge-sm{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--list);color:var(--muted-2)}.badge-sm.warn{background:var(--warn-soft);color:var(--warn-ink)}.badge-sm.danger{background:var(--danger-soft);color:var(--danger-ink)}.tl{flex:1;overflow:auto;padding:16px 32px 32px}.tl-grid{position:relative;min-width:100%}.tl-head{position:sticky;top:0;z-index:4;display:flex;background:var(--bg);border-bottom:1px solid var(--line)}.tl-day{flex:none;text-align:center;font-size:11px;color:var(--muted);padding:4px 0;border-left:1px solid var(--line)}.tl-day.today{color:var(--accent);font-weight:700}.tl-row{position:relative;height:34px;border-bottom:1px solid var(--line)}.tl-bar{position:absolute;top:5px;height:24px;border:0;border-radius:8px;padding:0 8px;font-size:12px;font-weight:600;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;cursor:pointer}.tl-bar.done{opacity:.55}.tl-group{position:sticky;left:0;font-weight:600;font-size:13px;padding:10px 0 4px}.tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);opacity:.6;z-index:3;pointer-events:none}.react-chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);font-size:12px}.react-chip.on{border-color:var(--accent);background:var(--accent-soft)}.cal-day.drop{background:var(--accent-soft)}.timer-live{font-variant-numeric:tabular-nums}.chart-bar{fill:var(--accent)}.chart-bar.alt{fill:var(--ok)}.stat-tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}.stat-tile b{font-family:var(--font-display);font-size:28px;letter-spacing:-.03em}.presence{display:flex;align-items:center}.presence .avatar{border:2px solid var(--bg);box-shadow:0 0 0 2px var(--ok)}.presence .avatar+.avatar{margin-left:-6px}.desc-box.empty{text-align:left;display:flex;align-items:center;justify-content:flex-start}.cm-h{flex-wrap:wrap}.cm-h>.grow{min-width:140px}.cap-first:first-letter{text-transform:uppercase}.section-title.cap-first{display:block}@media(max-width:700px){.board-header{padding:16px 16px 10px}.board-title{font-size:26px}.toolbar{flex-wrap:nowrap;overflow-x:auto;padding:0 16px 12px;gap:8px;scrollbar-width:none}.toolbar>*{flex:none}.toolbar>.row{flex-wrap:nowrap!important}.search-box{width:190px}.board-scroll{padding:16px;scroll-snap-type:x proximity}.list{scroll-snap-align:start;width:min(296px,82vw)}.add-list{width:min(296px,82vw)}.page-head h1{font-size:32px}.modal-head,.modal-body,.modal-foot,.cm-head,.cm-grid{padding-left:16px;padding-right:16px}.overlay{padding:16px 8px}}.seg{max-width:100%;overflow-x:auto;scrollbar-width:none}.seg button{flex:none}
