:root{--color-paper: #f8fafc;--color-paper-2: #f1f5f9;--color-paper-3: #e2e8f0;--color-card: #ffffff;--color-card-hover: #f8fafc;--color-rule: #e2e8f0;--color-rule-2: #cbd5e1;--color-border-subtle: rgba(226, 232, 240, .8);--color-neutral: #64748b;--color-muted: #475569;--color-ink-2: #334155;--color-ink: #0f172a;--color-accent: #3b82f6;--color-accent-hover: #2563eb;--color-accent-subtle: #eff6ff;--color-accent-ink: #ffffff;--color-focus: #3b82f6;--color-graphite: #0f172a;--color-graphite-2: #1e293b;--color-graphite-ink: #f8fafc;--color-graphite-muted: #94a3b8;--color-ok: #10b981;--color-ok-subtle: #ecfdf5;--color-ok-ink: #047857;--color-warn: #f59e0b;--color-warn-subtle: #fffbeb;--color-warn-ink: #b45309;--color-danger: #ef4444;--color-danger-subtle: #fef2f2;--color-danger-ink: #b91c1c;--font-display: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-outlier: "JetBrains Mono", ui-monospace, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1.0625rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.5rem;--text-display: clamp(1.6rem, 1.8vw + 1rem, 2.25rem);--text-display-s: clamp(1.25rem, 1.2vw + .8rem, 1.65rem);--space-3xs: .125rem;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4.5rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-micro: .12s;--dur-short: .2s;--dur-long: .35s;--shadow-whisper: 0 1px 2px 0 rgba(0, 0, 0, .03);--shadow-sm: 0 1px 3px 0 rgba(15, 23, 42, .04), 0 1px 2px -1px rgba(15, 23, 42, .04);--shadow-md: 0 4px 6px -1px rgba(15, 23, 42, .05), 0 2px 4px -2px rgba(15, 23, 42, .03);--shadow-lg: 0 10px 15px -3px rgba(15, 23, 42, .07), 0 4px 6px -4px rgba(15, 23, 42, .03);--shadow-hover: 0 12px 20px -3px rgba(15, 23, 42, .09), 0 6px 8px -4px rgba(15, 23, 42, .04);--rail-width: 15.5rem;--control-h: 2.625rem;--z-base: 1;--z-raised: 10;--z-dropdown: 100;--z-sticky: 200;--z-sticky-nav: 300;--z-modal: 400;--z-toast: 500;--z-tooltip: 600}html,body{overflow-x:clip}*,*:before,*:after{box-sizing:border-box}html{color-scheme:light}body{margin:0;min-height:100dvh;background:var(--color-paper);color:var(--color-ink-2);font-family:var(--font-body);font-weight:400;font-size:var(--text-base);line-height:1.55;padding-inline:max(0px,env(safe-area-inset-left));padding-bottom:max(0px,env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100dvh}h1,h2,h3,h4{font-family:var(--font-display);font-style:normal;font-weight:600;color:var(--color-ink);letter-spacing:-.025em;line-height:1.25;overflow-wrap:anywhere;min-width:0}h1{font-size:var(--text-display);margin:0;font-weight:700}h2{font-size:var(--text-lg);margin:0}h3{font-size:var(--text-md);margin:0}p{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}:focus{outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.kbd{font-family:var(--font-outlier);font-size:.7rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:.15rem .45rem;color:var(--color-neutral);background:var(--color-paper-2);white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);height:var(--control-h);padding-inline:var(--space-md);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-ink);font-weight:500;font-size:var(--text-sm);cursor:pointer;white-space:nowrap;line-height:1;box-shadow:var(--shadow-whisper);transition:all var(--dur-short) var(--ease-out)}.btn-primary{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent);box-shadow:0 2px 4px #3b82f640}.btn-quiet{background:transparent;border-color:transparent;color:var(--color-muted);box-shadow:none}.btn-danger{background:var(--color-danger-subtle);color:var(--color-danger-ink);border-color:#ef444433;box-shadow:none}.btn-sm{height:2rem;padding-inline:var(--space-sm);font-size:var(--text-xs);border-radius:var(--radius-sm)}.btn-xs{height:1.625rem;padding-inline:var(--space-xs);font-size:var(--text-xs);border-radius:var(--radius-sm)}@media(hover:hover)and (pointer:fine){.btn:hover,.btn.is-hover{background:var(--color-paper-2);border-color:var(--color-rule-2);box-shadow:var(--shadow-sm)}.btn-primary:hover,.btn-primary.is-hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);box-shadow:0 4px 8px #2563eb4d;color:#fff}.btn-quiet:hover,.btn-quiet.is-hover{background:var(--color-paper-2);color:var(--color-ink);box-shadow:none}.btn-danger:hover,.btn-danger.is-hover{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}}.btn:active,.btn.is-active{transform:scale(.98)}.btn:focus-visible,.btn.is-focus{outline:2px solid var(--color-focus);outline-offset:2px}.btn:disabled,.btn[aria-disabled=true],.btn.is-disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn[aria-pressed=true]{background:var(--color-accent-subtle);border-color:var(--color-accent);color:var(--color-accent)}.btn[data-state=loading] .btn-label,.btn.is-loading .btn-label{opacity:.7}.icon-btn{position:relative;width:var(--control-h);height:var(--control-h);padding:0;display:inline-grid;place-items:center;border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-ink-2);cursor:pointer;box-shadow:var(--shadow-whisper);transition:all var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.icon-btn:hover{background:var(--color-paper-2);color:var(--color-ink);border-color:var(--color-rule-2)}}.icon-btn:active{transform:scale(.96)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.field{display:grid;gap:var(--space-2xs);min-width:0}.field label,.lab{font-size:var(--text-sm);font-weight:500;color:var(--color-ink-2)}.input,.select,.textarea{width:100%;min-width:0;height:var(--control-h);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-card);padding-inline:var(--space-md);font-size:var(--text-base);color:var(--color-ink);box-shadow:var(--shadow-whisper);transition:border-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out),background-color var(--dur-short) var(--ease-out)}.textarea{height:auto;min-height:6rem;padding-block:var(--space-sm);resize:vertical;line-height:1.5}@media(hover:hover)and (pointer:fine){.input:hover,.select:hover,.textarea:hover{border-color:var(--color-rule-2)}}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:none;border-color:var(--color-focus);box-shadow:0 0 0 3px #3b82f626}.input:disabled,.select:disabled,.textarea:disabled{opacity:.55;background:var(--color-paper-2);cursor:not-allowed}.input[aria-invalid=true],.textarea[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--color-danger);box-shadow:0 0 0 3px #ef444426}.helper{min-height:1lh;font-size:var(--text-xs);color:var(--color-neutral)}.helper.is-error{color:var(--color-danger-ink);font-weight:500}.check{display:flex;align-items:center;gap:var(--space-xs);min-height:2.5rem;cursor:pointer}.check input{accent-color:var(--color-accent);width:1.15rem;height:1.15rem;border-radius:var(--radius-sm);cursor:pointer}.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.kv{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:var(--space-sm) var(--space-md);align-items:center;font-size:var(--text-sm)}.kv dt{color:var(--color-muted)}.kv dd{margin:0;color:var(--color-ink)}.num{font-variant-numeric:tabular-nums}.modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-xs)}.chip{display:inline-flex;align-items:center;gap:var(--space-2xs);height:1.5rem;padding-inline:var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;color:var(--color-ink-2);background:var(--color-paper-2);border:1px solid var(--color-rule);white-space:nowrap;line-height:1;width:fit-content;flex-shrink:0}.chip-accent{background:var(--color-accent-subtle);color:var(--color-accent);border-color:#3b82f633}.chip-ok{background:var(--color-ok-subtle);color:var(--color-ok-ink);border-color:#10b98140}.chip-warn{background:var(--color-warn-subtle);color:var(--color-warn-ink);border-color:#f59e0b40}.chip-danger{background:var(--color-danger-subtle);color:var(--color-danger-ink);border-color:#ef444440}.meter{display:grid;gap:var(--space-3xs);min-width:0}.meter-track{height:6px;background:var(--color-paper-3);border-radius:var(--radius-full);overflow:hidden}.meter-fill{height:100%;width:var(--w, 0%);background:var(--color-accent);border-radius:var(--radius-full);transition:width var(--dur-long) var(--ease-out)}.meter-fill.dev{background:#6366f1}.meter-lab{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--color-muted);font-weight:500;font-variant-numeric:tabular-nums}.shell{display:grid;grid-template-columns:var(--rail-width) minmax(0,1fr);min-height:100dvh;background:var(--color-paper)}.rail{position:sticky;top:0;height:100dvh;border-inline-end:1px solid var(--color-rule);border-top:1px solid var(--color-rule-2);background:var(--color-card);display:flex;flex-direction:column;padding:var(--space-lg) var(--space-md);gap:var(--space-lg);z-index:var(--z-sticky-nav)}.brand{display:grid;gap:2px;padding-inline:var(--space-xs)}.brand-mark{display:flex;align-items:center;gap:var(--space-xs);font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--color-ink);letter-spacing:-.03em;white-space:nowrap}.brand-sq{width:.75rem;height:.75rem;background:linear-gradient(135deg,var(--color-accent),#6366f1);border-radius:4px;flex:0 0 auto}.app-logo{filter:drop-shadow(0 2px 6px rgba(37,99,235,.3));transition:transform var(--dur-short) var(--ease-out),filter var(--dur-short) var(--ease-out)}.brand-mark:hover .app-logo{transform:scale(1.06);filter:drop-shadow(0 4px 10px rgba(79,70,229,.45))}.brand p{color:var(--color-neutral);font-size:var(--text-xs)}.rail-nav{display:flex;flex-direction:column;gap:4px;flex:1}.rail-link{display:flex;align-items:center;gap:var(--space-sm);height:2.5rem;padding-inline:var(--space-md);border-radius:var(--radius-md);color:var(--color-muted);font-size:var(--text-base);font-weight:500;white-space:nowrap;transition:all var(--dur-short) var(--ease-out)}.rail-link svg{flex:0 0 auto;opacity:.75;transition:opacity var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.rail-link:hover{background:var(--color-paper-2);color:var(--color-ink)}.rail-link:hover svg{opacity:1}}.rail-link.is-on{color:var(--color-accent);background:var(--color-accent-subtle);font-weight:600}.rail-link.is-on svg{opacity:1;color:var(--color-accent)}.rail-link .badge{margin-inline-start:auto;min-width:1.2rem;height:1.2rem;padding-inline:.35rem;border-radius:var(--radius-full);background:var(--color-accent);color:#fff;font-size:.7rem;font-weight:700;display:inline-grid;place-items:center;font-variant-numeric:tabular-nums}.rail-foot{display:grid;gap:var(--space-sm);border-top:1px solid var(--color-rule);padding-top:var(--space-md)}.rail-user{display:grid;gap:2px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-paper);border:1px solid var(--color-rule);color:inherit;transition:all var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.rail-user:hover{background:var(--color-paper-2);border-color:var(--color-rule-2)}}.rail-user.is-on{border-color:var(--color-accent);background:var(--color-accent-subtle)}.rail-user strong{color:var(--color-ink);font-weight:600;font-size:var(--text-sm)}.rail-user span{font-size:var(--text-xs);color:var(--color-neutral)}.foot-line{font-size:var(--text-xs);color:var(--color-neutral);padding-inline:var(--space-xs)}.work{min-width:0;display:grid;grid-template-rows:auto 1fr}.topbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--space-sm);height:3.75rem;padding-inline:var(--space-xl);border-top:1px solid var(--color-rule-2);border-bottom:1px solid var(--color-rule);background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar h1{font-size:var(--text-lg);font-weight:700;color:var(--color-ink);letter-spacing:-.02em;flex:1;min-width:0}.top-actions{display:flex;align-items:center;gap:var(--space-sm);margin-inline-start:auto}.bell-wrap{position:relative}.bell-dot{position:absolute;top:.4rem;right:.4rem;width:.5rem;height:.5rem;background:var(--color-accent);border-radius:var(--radius-full);box-shadow:0 0 0 2px #fff}.drop{position:absolute;right:0;top:calc(100% + 8px);width:22rem;background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);padding:var(--space-xs);display:flex;flex-direction:column;gap:2px}.drop-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-sm) var(--space-md);border:none;background:transparent;text-align:left;border-radius:var(--radius-md);cursor:pointer;transition:background var(--dur-micro) var(--ease-out)}.drop-item:hover{background:var(--color-paper-2)}.drop-item.is-read{opacity:.65}.drop-foot{padding-top:var(--space-xs);border-top:1px solid var(--color-rule);display:flex;justify-content:flex-end}.page{padding:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-xl);max-width:86rem;width:100%}.page-lead{display:flex;flex-direction:column;gap:var(--space-2xs)}.page-lead p{color:var(--color-muted);font-size:var(--text-base)}.menu-btn{display:none}.stat-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}.stat{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-xs);padding:var(--space-md) var(--space-lg);background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:transform var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}@media(hover:hover)and (pointer:fine){.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}}.stat b{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;color:var(--color-ink);letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1}.stat span{font-size:var(--text-sm);font-weight:500;color:var(--color-muted)}.stat.is-alert{border-color:#ef44444d;background:var(--color-danger-subtle)}.stat.is-alert b{color:var(--color-danger-ink)}.graphite{background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);box-shadow:var(--shadow-md)}.graphite h2{color:#fff;font-size:var(--text-md)}.graphite p{color:var(--color-graphite-muted);font-size:var(--text-sm)}.graphite-list{display:flex;flex-direction:column;gap:var(--space-xs)}.graphite-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:var(--space-md);align-items:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:#ffffff0d;transition:background var(--dur-short) var(--ease-out)}.graphite-row:hover{background:#ffffff1a}.graphite-row strong{color:#fff;font-weight:600}.graphite .chip{background:#ffffff26;border-color:transparent;color:#fff}.graphite .chip-danger{background:#ef44444d;color:#fca5a5}.dash-alert-list{display:flex;flex-direction:column;gap:var(--space-2xs)}.dash-alert{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-paper);border:1px solid var(--color-border-subtle);min-width:0;transition:all var(--dur-short) var(--ease-out)}.dash-alert-main{min-width:0;flex:1}.dash-alert strong{display:block;color:var(--color-ink);font-weight:600;overflow-wrap:anywhere}.dash-alert small{display:block;color:var(--color-muted);font-size:var(--text-sm);overflow-wrap:anywhere}.dash-alert-meta{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:3px;min-width:0;flex-shrink:0}.dash-alert-meta .chip{width:fit-content;align-self:flex-end;flex-shrink:0}.dash-alert-time{font-size:var(--text-xs);color:var(--color-muted);white-space:nowrap}@media(hover:hover)and (pointer:fine){.dash-alert:hover{background:var(--color-paper-2);border-color:var(--color-rule-2)}}.work-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:var(--space-xl);align-items:start}.panel{background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);box-shadow:var(--shadow-sm)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule)}.panel-head h2,.panel-head h3{font-size:var(--text-md)}.panel-head-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm)}.panel-head span{font-size:var(--text-xs);font-weight:600;color:var(--color-neutral);background:var(--color-paper-2);padding:.2rem .6rem;border-radius:var(--radius-full)}.stage-block{display:grid;grid-template-columns:6rem minmax(0,1fr);gap:var(--space-md);padding-block:var(--space-sm)}.stage-block+.stage-block{border-top:1px solid var(--color-rule)}.stage-block h3{font-size:var(--text-xs);font-weight:600;color:var(--color-neutral);text-transform:uppercase;letter-spacing:.05em;padding-top:var(--space-2xs)}.stage-items{display:flex;flex-direction:column;gap:var(--space-2xs)}.proj-line{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-paper);border:1px solid var(--color-border-subtle);transition:all var(--dur-short) var(--ease-out);min-width:0}@media(hover:hover)and (pointer:fine){.proj-line:hover{background:var(--color-paper-2);border-color:var(--color-rule-2);transform:translate(2px)}}.proj-line-main{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.proj-line-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);min-width:0}.proj-line-title{color:var(--color-ink);font-weight:600;font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-line-stage-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;font-size:.7rem;font-weight:600;border-radius:var(--radius-full);background:var(--color-paper-2);border:1px solid var(--color-rule-2);color:var(--color-ink-2);white-space:nowrap;flex-shrink:0}.proj-line-prob{color:var(--color-accent);font-weight:700}.proj-line-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px var(--space-xs);font-size:var(--text-xs);color:var(--color-neutral);min-width:0}.proj-line-code-client{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-line-finance{display:inline-flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0}.proj-line-amt{font-weight:700;color:var(--color-ink);font-size:var(--text-xs)}.proj-line-sep{color:var(--color-rule-2)}.proj-line-next-date{color:var(--color-muted);font-size:.72rem}.won-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-paper);border:1px solid var(--color-border-subtle);align-items:center;transition:all var(--dur-short) var(--ease-out)}.won-row:hover{background:var(--color-paper-2);border-color:var(--color-rule-2)}.won-row .meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin-top:var(--space-xs)}.won-meters{display:grid;gap:var(--space-xs)}.feed{display:flex;flex-direction:column;gap:var(--space-xs)}.feed-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:var(--color-paper);border:1px solid var(--color-border-subtle);transition:all var(--dur-short) var(--ease-out)}.feed-item:hover{background:var(--color-paper-2);border-color:var(--color-rule-2)}.feed-item strong{font-size:var(--text-sm);color:var(--color-ink)}.feed-item small{color:var(--color-neutral);font-size:var(--text-xs)}.toolbar{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.search{min-width:min(100%,18rem);flex:1}.card-list{display:flex;flex-direction:column;gap:var(--space-xs)}.list-item{border-radius:var(--radius-lg);background:var(--color-card);border:1px solid var(--color-rule);box-shadow:var(--shadow-sm);overflow:hidden;transition:all var(--dur-short) var(--ease-out)}.list-item:hover{border-color:var(--color-rule-2);box-shadow:var(--shadow-md)}.list-item.is-open{background:var(--color-paper-2)}.row-card{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:var(--space-md);align-items:center;padding:var(--space-md) var(--space-lg);min-width:0}.row-card h3{font-size:var(--text-md);font-weight:600;margin:0}.row-card-top-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);min-width:0}.row-card-mobile-amt,.row-card-mobile-health{display:none}.row-card-desktop-amt,.row-card-desktop-health{display:block}.edit-dock{display:flex;flex-direction:column;gap:var(--space-md);margin:0 var(--space-lg) var(--space-lg);padding:var(--space-lg);background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.edit-dock-head{display:flex;flex-direction:column;gap:var(--space-2xs);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule)}.edit-dock-head h3{font-size:var(--text-md);display:flex;align-items:center;gap:var(--space-xs)}.edit-dock-head p{color:var(--color-muted);font-size:var(--text-sm)}.muted{color:var(--color-neutral)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-2xl) var(--space-lg);gap:var(--space-xs);background:var(--color-paper);border:1px dashed var(--color-rule-2);border-radius:var(--radius-lg)}.empty h3{font-size:var(--text-md);color:var(--color-ink)}.empty p{font-size:var(--text-sm);color:var(--color-muted)}.modal,.palette{border:1px solid var(--color-rule-2);border-radius:var(--radius-lg);background:var(--color-card);color:var(--color-ink-2);box-shadow:var(--shadow-lg);padding:0}.modal:not([open]),.palette:not([open]){display:none}.modal[open],.palette[open]{display:flex;flex-direction:column;margin:auto}.modal[open]{width:min(36rem,calc(100% - 2rem));max-height:min(80vh,44rem);height:fit-content;padding:var(--space-xl);gap:var(--space-md);overflow:auto}.modal::backdrop,.palette::backdrop{background:#0f172a66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal h2{font-size:var(--text-lg);margin:0}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding-bottom:var(--space-xs);border-bottom:1px solid var(--color-rule-2)}.modal-head h2{margin:0;font-size:var(--text-lg);font-weight:600;color:var(--color-ink)}.modal-close-btn{font-weight:600;flex-shrink:0;margin-left:auto}.modal-grid{display:grid;gap:var(--space-md)}.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-xs);margin-top:var(--space-xs)}.palette[open]{width:min(32rem,calc(100% - 2rem));max-height:min(80vh,36rem);overflow:hidden}.palette-search{border:0;border-bottom:1px solid var(--color-rule);border-radius:0;box-shadow:none}.palette-list{max-height:20rem;overflow-y:auto;padding:var(--space-xs);display:flex;flex-direction:column}.palette-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);cursor:pointer;border:none;background:transparent;text-align:left;width:100%}.palette-item:hover,.palette-item.is-on{background:var(--color-accent-subtle);color:var(--color-accent)}.palette-item small{color:var(--color-muted);font-size:var(--text-xs)}.toast-stack{position:fixed;bottom:var(--space-lg);right:var(--space-lg);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-xs);max-width:24rem}.toast{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-graphite);color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--text-sm)}.toast.is-error{background:var(--color-danger)}.hero-work{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,22rem);gap:var(--space-xl);align-items:stretch}.hero-work header,.hero-work>.panel{background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-md);box-shadow:var(--shadow-sm);min-height:0;height:100%}.hero-work header h1{font-size:var(--text-2xl);line-height:1.2}.hero-work .actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:auto}.hero-work .kv{margin-top:auto}.stepper{display:flex;flex-wrap:wrap;gap:4px;background:var(--color-paper-2);padding:4px;border-radius:var(--radius-md)}.step{flex:1;min-width:fit-content;height:2.25rem;padding-inline:var(--space-xs);border:none;background:transparent;border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;color:var(--color-muted);cursor:pointer;transition:all var(--dur-short) var(--ease-out)}.step:hover{color:var(--color-ink);background:#fff9}.step.is-on{background:var(--color-card);color:var(--color-accent);font-weight:600;box-shadow:var(--shadow-whisper)}.miles,.mile-list{display:flex;flex-direction:column;gap:var(--space-xs)}.mile-block{display:grid;gap:var(--space-xs)}.mile-block.is-open .mile{background:var(--color-paper-2);border-color:var(--color-rule-2)}.mile-block .edit-dock{margin:0}.mile,.mile-row{display:grid;grid-template-columns:minmax(0,1fr) 7rem 4.5rem auto auto;gap:var(--space-sm);align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-paper);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md)}.composer{display:grid;gap:var(--space-sm);padding:var(--space-md);background:var(--color-paper);border:1px dashed var(--color-rule-2);border-radius:var(--radius-md)}.post-feed{display:flex;flex-direction:column;gap:var(--space-md)}.post{background:var(--color-paper);border:1px solid var(--color-rule);border-radius:var(--radius-md);padding:var(--space-md);display:grid;gap:var(--space-sm);min-width:0;transition:padding var(--dur-short) ease,background var(--dur-short) ease,border-color var(--dur-short) ease}.post.is-open{background:var(--color-paper-2);border-color:var(--color-rule-2)}.post.is-collapsed{padding:var(--space-xs) var(--space-md);gap:0}.post.is-collapsed:hover{background:var(--color-paper-2);border-color:var(--color-rule-2)}.post-head{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.post-toggle-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-muted);font-size:.7rem;cursor:pointer;flex-shrink:0;transition:transform .15s ease,color .15s ease,background .15s ease}.post-toggle-btn:hover{color:var(--color-ink);background:var(--color-rule-2)}.post-toggle-btn.is-collapsed{transform:rotate(-90deg)}.post-head-main{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-xs);min-width:0;flex:1}.post-tags-row{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.post-title-row{display:inline-flex;align-items:center;min-width:0;flex:1}.post-title-click{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease;font-size:var(--text-md);font-weight:600;color:var(--color-ink);margin:0;line-height:1.4;overflow-wrap:anywhere}.post-title-click:hover{color:var(--color-accent)}.post-collapsed-summary{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:2px}.post-body{font-size:var(--text-base);line-height:1.6;white-space:pre-wrap;color:var(--color-ink-2)}.auto-link{color:var(--color-accent);text-decoration:underline;text-decoration-color:#0076ec66;text-decoration-color:oklch(58% .2 256 / .4);text-underline-offset:3px;word-break:break-all;font-weight:500;transition:color var(--dur-short) var(--ease-out),text-decoration-color var(--dur-short) var(--ease-out)}.auto-link:hover{color:var(--color-focus);text-decoration-color:var(--color-focus)}.auto-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.post-meta{color:#a9a9a9;font-size:var(--text-sm)}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2xs)}.post .edit-dock{margin:0}.alert-line{display:flex;flex-wrap:wrap;gap:var(--space-xs);align-items:center;font-size:var(--text-sm);color:#6366f1}.comment-section{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid var(--color-rule)}.comment-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.comment-section-title{font-size:var(--text-xs);font-weight:600;color:var(--color-neutral);letter-spacing:.02em}.comment-list{display:flex;flex-direction:column;gap:var(--space-xs)}.comment-item{display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-xs) var(--space-sm);background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-sm);font-size:var(--text-sm);transition:border-color var(--dur-micro) var(--ease-out)}.comment-item:hover{border-color:var(--color-rule-2)}.comment-item-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.comment-item-author{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--text-xs)}.comment-item-author strong{font-weight:600;color:var(--color-ink)}.comment-item-meta{color:var(--color-muted)}.comment-item-edited{color:var(--color-neutral);font-size:var(--text-xs)}.comment-item-actions{display:flex;align-items:center;gap:2px;opacity:.8;transition:opacity var(--dur-micro) var(--ease-out)}.comment-item:hover .comment-item-actions{opacity:1}.comment-body{font-size:var(--text-sm);line-height:1.5;color:var(--color-ink-2);white-space:pre-wrap;word-break:break-word;margin:0}.comment-edit-form{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-2xs)}.comment-edit-actions{display:flex;align-items:center;gap:var(--space-2xs)}.comment-form-wrap{margin-top:var(--space-xs)}.comment-form-box{display:flex;flex-direction:column;background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;transition:border-color var(--dur-short) var(--ease-out),box-shadow var(--dur-short) var(--ease-out)}.comment-form-box:focus-within{border-color:var(--color-rule-2);box-shadow:var(--shadow-md)}.comment-input{width:100%;min-height:2.75rem;padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);border:none;background:transparent;resize:vertical;line-height:1.5;color:var(--color-ink-2)}.comment-input:focus{outline:none}.comment-form-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);padding:var(--space-2xs) var(--space-sm);background:var(--color-paper-2);border-top:1px solid var(--color-rule);flex-wrap:wrap}.comment-textarea{width:100%;padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm);border-radius:var(--radius-sm);line-height:1.4}.file-pick-compact-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-xs)}.file-pick-compact{position:relative;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:var(--text-xs);font-weight:500;color:var(--color-muted);background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--dur-micro) var(--ease-out);-webkit-user-select:none;user-select:none}.file-pick-compact:hover{color:var(--color-ink);background:var(--color-paper);border-color:var(--color-rule-2)}.file-pick-compact input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.file-pick-compact.is-disabled{opacity:.5;cursor:not-allowed}.file-pick-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.file-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--color-card);border:1px solid var(--color-rule-2);border-radius:var(--radius-full);font-size:.75rem;color:var(--color-ink);max-width:14rem}.file-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.file-chip-size{color:var(--color-muted);font-size:.7rem}.file-chip-del{border:none;background:transparent;color:var(--color-muted);cursor:pointer;padding:0 2px;font-size:.9rem;line-height:1;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center}.file-chip-del:hover{color:var(--color-danger)}.file-pick-wrap{display:grid;gap:var(--space-2xs);min-width:0}.file-pick{position:relative;display:inline-flex;align-items:center;justify-content:center;width:fit-content;min-height:var(--control-h);padding-inline:var(--space-sm);border:1px dashed var(--color-rule-2);border-radius:var(--radius-md);background:var(--color-card);color:var(--color-ink);cursor:pointer;white-space:nowrap}.file-pick input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(hover:hover)and (pointer:fine){.file-pick:hover{background:var(--color-paper-2);border-color:var(--color-ink-2)}}.file-pick:focus-within{outline:2px solid var(--color-focus);outline-offset:2px}.file-pick.is-disabled,.file-pick:has(input:disabled){opacity:.55;cursor:not-allowed}.attach-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2xs);min-width:0}.attach-list.is-compact{gap:4px;margin-top:4px}.attach-row{display:grid;grid-template-columns:2.75rem minmax(0,1fr) auto auto;gap:var(--space-sm);align-items:center;padding:var(--space-xs);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-card);min-width:0}.attach-list.is-compact .attach-row{grid-template-columns:2rem minmax(0,1fr) auto auto;gap:var(--space-xs);padding:4px var(--space-xs);border-radius:var(--radius-sm);font-size:var(--text-xs)}.attach-ext,.attach-thumb{width:2.75rem;height:2.75rem;border-radius:var(--radius-sm);border:1px solid var(--color-rule);background:var(--color-paper-2)}.attach-ext.is-compact,.attach-thumb.is-compact,.attach-thumb-btn.is-compact{width:2rem;height:2rem}.attach-ext{display:grid;place-items:center;font-family:var(--font-outlier);font-size:.65rem;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted);overflow:hidden;padding-inline:2px}.attach-thumb-btn{padding:0;border:0;background:transparent;cursor:pointer;width:2.75rem;height:2.75rem}.attach-thumb{display:block;object-fit:cover}.attach-meta{display:grid;gap:var(--space-3xs);min-width:0}.attach-meta strong{font-weight:600;color:var(--color-ink);overflow-wrap:anywhere}.attach-meta span{color:var(--color-muted);font-size:var(--text-sm)}@media(max-width:900px){.hero-work,.two,.mile,.mile-row{grid-template-columns:minmax(0,1fr)}.dash-alert{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.dash-alert-meta{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;text-align:left;gap:var(--space-xs);width:100%}.dash-alert-meta .chip{align-self:auto}}@media(max-width:768px){.shell{grid-template-columns:1fr}.rail{position:fixed;inset:0 auto 0 0;width:min(var(--rail-width),80vw);transform:translate(-100%);transition:transform var(--dur-short) var(--ease-out);box-shadow:var(--shadow-lg);z-index:var(--z-modal)}.rail.is-open{transform:translate(0)}.scrim{position:fixed;inset:0;background:#0f172a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:calc(var(--z-modal) - 1);border:none}.menu-btn{display:inline-grid}.topbar{padding-inline:var(--space-md);height:3.5rem;gap:var(--space-xs)}.topbar h1{font-size:var(--text-base);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-search-btn{padding-inline:var(--space-xs);height:2.25rem;gap:4px}.top-search-kbd{display:none}.drop{width:min(22rem,calc(100vw - 1.5rem));right:-.5rem;max-height:80vh;overflow-y:auto}.page{padding:var(--space-md);gap:var(--space-lg)}.stat-strip{grid-template-columns:1fr 1fr;gap:var(--space-xs)}.stat{padding:var(--space-sm) var(--space-md)}.stat b{font-size:clamp(1.6rem,5vw,2.25rem)}.work-grid{grid-template-columns:1fr;gap:var(--space-lg)}.stage-block{grid-template-columns:1fr;gap:var(--space-xs);padding-block:var(--space-xs)}.stage-block h3{padding:.2rem .55rem;background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-sm);width:fit-content;font-size:.7rem;letter-spacing:.03em;margin-bottom:2px}.stage-items{width:100%}.proj-line{padding:var(--space-sm);gap:var(--space-xs);border-radius:var(--radius-md)}.proj-line-title{white-space:normal;word-break:keep-all;line-height:1.35;font-size:var(--text-sm)}.proj-line-meta{flex-direction:row;justify-content:space-between;align-items:center;width:100%;font-size:.72rem}.proj-line-code-client{flex:1;min-width:0}.proj-line-finance{margin-left:auto;flex-shrink:0;gap:4px}.won-row{grid-template-columns:1fr;gap:var(--space-sm);padding:var(--space-sm) var(--space-md)}.won-meters{width:100%;padding-top:var(--space-xs);border-top:1px dashed var(--color-rule)}.row-card{grid-template-columns:1fr;gap:var(--space-sm);padding:var(--space-md)}.row-card-mobile-amt,.row-card-mobile-health{display:inline-flex;font-size:var(--text-sm);flex-shrink:0}.row-card-desktop-amt,.row-card-desktop-health{display:none}.row-card-action-col{width:100%;text-align:left!important}.row-card .actions{width:100%;display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-2xs)}.row-card .actions .btn{flex:1;min-width:fit-content}.toolbar{flex-direction:column;align-items:stretch;gap:var(--space-xs)}.toolbar .search,.toolbar .input,.toolbar .select,.toolbar .btn{width:100%;max-width:100%!important}.modal[open]{width:calc(100% - 1.5rem);max-height:calc(100dvh - 2rem);padding:var(--space-md)}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%}.hero-work header,.hero-work>.panel{padding:var(--space-md)}.hero-work header h1{font-size:var(--text-xl)}.hero-work .actions{width:100%}.hero-work .actions .btn{flex:1 1 calc(50% - var(--space-xs))}.stepper{gap:4px;padding:3px}.step{padding-inline:var(--space-2xs);font-size:.72rem;height:2.25rem}.post-head{align-items:flex-start;flex-wrap:wrap;gap:var(--space-xs)}.post-toggle-btn{margin-top:2px}.post-head-main{flex-direction:column;align-items:flex-start;gap:4px;width:100%}.post-tags-row{display:flex;width:100%}.post-title-row,.post-title-click{display:block;width:100%}.post-actions{width:100%;justify-content:flex-end;border-top:1px dashed var(--color-rule);padding-top:4px;margin-top:2px}}@media(max-width:480px){.top-search-text{display:none}.top-search-btn{width:2.25rem;height:2.25rem;padding:0;justify-content:center}.proj-line-meta{flex-direction:column;align-items:flex-start;gap:2px}.proj-line-finance{margin-left:0;width:100%;justify-content:space-between;padding-top:2px;border-top:1px dashed var(--color-rule);margin-top:2px}}.login{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--color-paper)}.login-form,.login-panel{min-width:0}.login-form{display:flex;flex-direction:column;justify-content:center;gap:var(--space-lg);padding:var(--space-xl);width:100%;max-width:28rem;margin-inline:auto;min-height:100dvh;background:var(--color-paper);color:var(--color-ink-2)}.login-form h1{font-size:var(--text-xl)}.login-panel{background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;padding:var(--space-3xl);display:flex;flex-direction:column;justify-content:center;gap:var(--space-xl);min-height:100dvh}.login-panel h2{color:#fff;font-size:var(--text-2xl)}.login-panel ol{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md);color:var(--color-graphite-muted);font-size:var(--text-base);line-height:1.6}@media(max-width:768px){.login{grid-template-columns:1fr}.login-panel{display:none}.login-form{padding:var(--space-xl)}.attach-row{grid-template-columns:2.75rem minmax(0,1fr)}.attach-row .btn{grid-column:2;width:fit-content}}.project-files-modal{max-width:min(64rem,95vw);width:100%;max-height:88vh;padding:0;border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden}.project-files-container{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg);overflow-y:auto;max-height:88vh}.project-files-modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-rule)}.project-files-head-title{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;min-width:0;flex:1}.project-files-modal-close{font-weight:600;flex-shrink:0;margin-left:auto}.project-files-section{display:grid;gap:var(--space-md)}.project-files-head-title h2{margin:0}.project-files-stats{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.project-files-view-toggles{display:flex;gap:4px}.project-files-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-paper-2);border:1px solid var(--color-rule);border-radius:var(--radius-md)}.project-files-search{position:relative;flex:1 1 16rem;max-width:24rem}.project-files-search input{width:100%;padding-right:1.75rem}.project-files-search-clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);padding:0 4px;font-size:1rem;line-height:1}.project-files-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.filter-group{display:flex;align-items:center;gap:4px;font-size:var(--text-xs)}.filter-group-label{color:var(--color-muted);font-weight:500;margin-right:2px}.filter-btn{border:1px solid var(--color-rule-2);background:var(--color-card);color:var(--color-ink-2);border-radius:var(--radius-full);padding:2px 8px;font-size:var(--text-xs);cursor:pointer;transition:all .15s ease}.filter-btn:hover{background:var(--color-paper);border-color:var(--color-ink-2)}.filter-btn.is-on{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink);font-weight:600}.project-files-list{display:grid;gap:var(--space-2xs)}.project-file-row{display:grid;grid-template-columns:2.75rem minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-md);transition:border-color .15s ease,box-shadow .15s ease}.project-file-row:hover{border-color:var(--color-rule-2);box-shadow:var(--shadow-sm)}.project-file-thumb{width:2.75rem;height:2.75rem;border-radius:var(--radius-sm);border:1px solid var(--color-rule);background:var(--color-paper-2);overflow:hidden;display:grid;place-items:center;cursor:pointer;flex-shrink:0}.project-file-thumb.is-large{width:100%;height:9rem;border-radius:0;border:none}.project-file-thumb.is-ext{font-family:var(--font-outlier);font-size:.65rem;font-weight:700;color:var(--color-muted);letter-spacing:.05em;text-transform:uppercase;background:var(--color-paper-2)}.project-file-thumb.is-large.is-ext{font-size:1.25rem}.project-file-img{width:100%;height:100%;object-fit:cover;display:block}.project-file-info{display:grid;gap:2px;min-width:0}.project-file-name-wrap{display:flex;align-items:baseline;gap:var(--space-xs);min-width:0}.project-file-name{font-size:var(--text-sm);font-weight:600;color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.project-file-name:hover{color:var(--color-primary);text-decoration:underline}.project-file-size{font-size:var(--text-xs);color:var(--color-muted);flex-shrink:0}.project-file-meta{display:flex;align-items:center;gap:6px;font-size:var(--text-xs);color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-file-source{color:var(--color-ink-2)}.project-file-source strong{font-weight:500;color:var(--color-ink)}.project-file-actions{display:flex;align-items:center;gap:4px}.project-files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:var(--space-sm)}.project-file-card{background:var(--color-card);border:1px solid var(--color-rule);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.project-file-card:hover{transform:translateY(-2px);border-color:var(--color-rule-2);box-shadow:var(--shadow-md)}.project-file-card-thumb-wrap{position:relative;width:100%;height:9rem;background:var(--color-paper-2);cursor:pointer;overflow:hidden}.project-file-card-overlay{position:absolute;inset:0;background:#00000073;color:#fff;display:grid;place-items:center;font-size:var(--text-xs);font-weight:600;opacity:0;transition:opacity .2s ease}.project-file-card-thumb-wrap:hover .project-file-card-overlay{opacity:1}.project-file-card-body{padding:var(--space-xs) var(--space-sm) var(--space-sm);display:grid;gap:4px;flex:1}.project-file-card-name{font-size:var(--text-xs);font-weight:600;color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-file-card-sub{display:flex;justify-content:space-between;font-size:.7rem;color:var(--color-muted)}.project-file-card-post{display:flex;align-items:center;gap:4px;font-size:.7rem;color:var(--color-ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.project-file-card-post span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-file-card-actions{display:flex;gap:4px;margin-top:var(--space-xs)}.project-file-card-actions .btn{flex:1}.file-lightbox-backdrop{position:fixed;inset:0;background:#000000d1;z-index:var(--z-modal);display:grid;place-items:center;padding:var(--space-md);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.file-lightbox-content{background:var(--color-card);border-radius:var(--radius-lg);max-width:90vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;border:1px solid var(--color-rule)}.file-lightbox-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-rule);background:var(--color-paper);gap:var(--space-md)}.file-lightbox-title{display:grid;gap:2px;min-width:0}.file-lightbox-title strong{font-size:var(--text-sm);color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-lightbox-title small{font-size:var(--text-xs);color:var(--color-muted)}.file-lightbox-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.file-lightbox-body{padding:var(--space-md);display:grid;place-items:center;overflow:auto;background:#0f1117;max-height:calc(90vh - 4.5rem)}.lightbox-img{max-width:100%;max-height:calc(90vh - 6rem);object-fit:contain;border-radius:var(--radius-sm)}.lightbox-loading{color:#fff;font-size:var(--text-sm);padding:var(--space-xl)}.thread-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:1px solid var(--color-rule);flex-wrap:wrap}.thread-tabs{display:flex;align-items:center;gap:var(--space-2xs);overflow-x:auto;padding-bottom:2px;max-width:100%;scrollbar-width:thin}.thread-tab{display:inline-flex;align-items:center;gap:var(--space-2xs);padding:.35rem .65rem;font-size:var(--text-xs);font-weight:500;color:var(--color-ink-2);background:var(--color-bg-alt);border:1px solid var(--color-rule-2);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:all .15s ease}.thread-tab:hover{background:var(--color-card-hover);color:var(--color-ink);border-color:var(--color-rule)}.thread-tab.is-active{background:var(--color-accent-dim);color:var(--color-accent);border-color:var(--color-accent);font-weight:600}.thread-tab.is-closed{opacity:.7}.thread-tab.is-closed.is-active{opacity:1}.thread-count{display:inline-block;padding:.05rem .35rem;font-size:.7rem;font-weight:600;border-radius:var(--radius-pill);background:var(--color-rule-2);color:var(--color-ink-2)}.thread-tab.is-active .thread-count{background:var(--color-accent);color:#fff}.thread-new-btn{margin-left:auto;font-size:var(--text-xs);white-space:nowrap}.thread-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-card-alt);border:1px solid var(--color-rule-2);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);margin-bottom:var(--space-xs);flex-wrap:wrap}.thread-banner.is-closed{border-left-color:var(--color-muted);background:var(--color-bg-alt)}.thread-banner-main{display:grid;gap:.2rem;min-width:0;flex:1}.thread-banner-title-wrap{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap}.thread-banner-title{font-size:var(--text-sm);color:var(--color-ink)}.thread-banner-desc{margin:0;font-size:var(--text-xs);color:var(--color-muted);line-height:1.4}.thread-banner-actions{display:flex;align-items:center;gap:var(--space-2xs)}.chip-thread{background:var(--color-accent-dim);color:var(--color-accent);border:1px solid var(--color-accent-dim);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;gap:3px}.chip-thread:hover{background:var(--color-accent);color:#fff}.chip-thread.is-closed{background:var(--color-bg-alt);color:var(--color-muted);border-color:var(--color-rule);font-weight:500}.chip-thread.is-closed:hover{background:var(--color-rule-2);color:var(--color-ink)}.chip-thread .chip-sub{display:inline-block;margin-left:2px;padding:0 4px;font-size:.65rem;background:var(--color-rule-2);color:var(--color-muted);border-radius:var(--radius-pill)}.thread-status-radios{display:flex;gap:var(--space-md);align-items:center;margin-top:var(--space-2xs)}.radio-label{display:inline-flex;align-items:center;gap:var(--space-2xs);font-size:var(--text-sm);color:var(--color-ink);cursor:pointer}
