:root{--bg:#0f1115;--bg-raised:#16191f;--bg-sunken:#0c0e12;--bg-inset:#12151a;--border:#272c35;--border-strong:#3a4150;--text:#e8eaef;--text-soft:#a6adba;--text-faint:#7b8394;--accent:#8b80f9;--accent-soft:#8b80f929;--accent-hover:#9d94ff;--ok:#34d399;--ok-soft:#34d39921;--warn:#fbbf24;--warn-soft:#fbbf241f;--error:#f87171;--error-soft:#f8717121;--info:#6ea8fe;--info-soft:#6ea8fe21;--radius:8px;--radius-sm:6px;--radius-lg:12px;--shadow-sm:0 1px 2px #0006;--shadow:0 4px 16px #00000073;--shadow-lg:0 18px 48px #0009;--mono:ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", system-ui, -apple-system, sans-serif;--header-h:56px;--fs-page:26px;--fs-section:18px;--fs-card:14px;--fs-body:14px;--fs-secondary:12px;--sp-1:8px;--sp-2:16px;--sp-3:24px;--sp-4:32px;--sp-5:40px;--sp-6:48px;--rail-width:224px;--inspector-width:320px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:var(--fs-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;line-height:1.65}h1,h2,h3,h4{text-rendering:optimizelegibility}::selection{color:#fff;background:#8b80f952}button,input,select,textarea{font:inherit;color:inherit}input,textarea,select{caret-color:var(--accent)}h1,h2,h3,h4,p{margin:0}code,pre,.mono{font-family:var(--mono)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#333a46 padding-box content-box;border:2px solid #0000;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#414a59 padding-box content-box}::-webkit-scrollbar-track{background:0 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{flex-direction:column;height:100%;display:flex}.app-header{height:var(--header-h);background:var(--bg-raised);border-bottom:1px solid var(--border);z-index:20;flex:none;align-items:center;gap:16px;padding:0 16px;display:flex}.brand{letter-spacing:-.01em;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;font-weight:650;display:flex}.brand-mark{object-fit:cover;border-radius:7px;width:26px;height:26px;display:block;box-shadow:0 2px 8px #4f46e559}.brand-text{flex-direction:column;align-items:flex-start;line-height:1.15;display:flex}.brand-name{font-size:13px}.brand-sub{color:var(--text-faint);letter-spacing:.08em;font-size:10px;font-weight:500}.header-breadcrumb{min-width:0;color:var(--text-soft);align-items:center;gap:8px;font-size:12px;display:flex}.header-breadcrumb .sep{color:var(--text-faint)}.header-breadcrumb .crumb{cursor:pointer;color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:4px;max-width:220px;padding:2px 4px;overflow:hidden}.header-breadcrumb .crumb:hover{background:var(--bg-sunken);color:var(--text)}.header-breadcrumb .crumb-current{color:var(--text);cursor:default;font-weight:600}.header-breadcrumb .crumb-current:hover{background:0 0}.header-spacer{flex:1}.header-nav{gap:2px;display:flex}.header-nav button{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-soft);background:0 0;border:none;padding:6px 12px;font-size:12px;font-weight:500}.header-nav button:hover{background:var(--bg-sunken);color:var(--text)}.header-nav button.is-active{background:var(--accent-soft);color:var(--accent)}.task-center{position:relative}.task-center-btn{align-items:center;gap:6px;display:inline-flex;position:relative}.task-center-btn.has-active{color:var(--accent)}.task-badge{background:var(--accent);color:#fff;font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;min-width:17px;height:17px;padding:0 4px;font-size:10.5px;font-weight:700;display:inline-grid}.task-menu{z-index:60;border:1px solid var(--border-strong);border-radius:var(--radius);background:#20242e;width:340px;position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 16px 48px #0000008c}.task-menu-head{letter-spacing:.08em;color:var(--text-faint);border-bottom:1px solid var(--border);padding:9px 14px;font-size:10.5px;font-weight:700}.task-empty{font-size:var(--fs-secondary);color:var(--text-faint);padding:16px 14px;line-height:1.7}.task-row{position:relative}.task-row .task-item{padding-right:66px}.task-row:last-child .task-item{border-bottom:0}.task-cancel{border:1px solid var(--border);background:var(--bg-raised);color:var(--text-soft);cursor:pointer;border-radius:6px;padding:3px 8px;font-size:11px;position:absolute;top:9px;right:10px}.task-cancel:hover{color:var(--warn);border-color:var(--warn)}.task-item{text-align:left;border:0;border-bottom:1px solid var(--border);width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;flex-direction:column;gap:3px;padding:10px 14px;display:flex}.task-item:last-child{border-bottom:0}.task-item:hover{background:var(--bg-sunken)}.task-item-name{font-size:13px;font-weight:650}.task-item-stage{font-size:var(--fs-secondary);color:var(--text-soft)}.task-item-meta{color:var(--text-faint);align-items:center;gap:10px;font-size:11px;display:flex}.task-status{color:var(--text-soft)}.task-status.is-running{color:var(--ok)}.user-chip{border:1px solid var(--border);background:var(--bg-inset);border-radius:999px;align-items:center;gap:8px;padding:4px 4px 4px 8px;display:flex}.user-chip .name{font-size:12px;font-weight:550}.user-chip .role{color:var(--text-faint);font-size:10px}.user-chip .who{white-space:nowrap;align-items:center;gap:6px;line-height:1;display:flex}.user-chip .role:before{content:"";background:var(--border-strong);vertical-align:-1px;width:1px;height:9px;margin-right:6px;display:inline-block}.avatar{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:11px;font-weight:650;display:grid}.app-body{flex:1;min-height:0;overflow:hidden}.scroll-y{overscroll-behavior:contain;overflow-y:auto}.page{height:100%;overflow-y:auto}.page-inner{max-width:none;margin:0 auto;padding:32px clamp(24px,3vw,56px) 64px}.page-title{font-size:var(--fs-page);letter-spacing:-.02em;font-weight:680;line-height:1.25}.page-desc{color:var(--text-soft);max-width:62ch;font-size:var(--fs-body);margin-top:8px}.page-head{align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.page-head .grow{flex:1}.projects-page{--page-max:none}.projects-page .page-inner{max-width:var(--page-max)}.eyebrow{font-size:var(--fs-secondary);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px;font-weight:700}@media (width<=760px){.app-header{height:auto;min-height:var(--header-h);flex-wrap:wrap;gap:8px;padding:8px 12px}.brand,.header-nav,.user-chip{flex-shrink:0}.header-nav button{white-space:nowrap}.brand-sub{display:none}.user-chip{margin-left:auto}.header-breadcrumb{max-width:100%}}.projects-heading{border-radius:var(--radius-lg);color:#f8fafc;background:radial-gradient(520px 260px at 96% -30%,#7b73e952,#0000 64%),linear-gradient(135deg,#1c2d4b 0%,#18263e 56%,#15223a 100%);border:1px solid #293c58;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px;padding:30px 32px;display:flex;position:relative;overflow:hidden;box-shadow:0 12px 32px #14203429}.projects-heading:after{content:"";pointer-events:none;opacity:.5;background-image:radial-gradient(#ffffff38 2.5px,#0000 3px);background-repeat:repeat-y;background-size:18px 22px;width:18px;position:absolute;top:-20px;bottom:-20px;right:220px;-webkit-mask-image:linear-gradient(#0000,#000 30% 70%,#0000);mask-image:linear-gradient(#0000,#000 30% 70%,#0000)}@media (width<=760px){.projects-heading:after{display:none}}.projects-heading>*{z-index:1;position:relative}.projects-heading .eyebrow{color:#b7c4fa}.projects-heading .page-desc{color:#c3cddd;max-width:68ch}.projects-heading>.btn-primary{box-shadow:none;background:#6259ee;border-color:#948eff;flex-shrink:0}.projects-heading>.btn-primary:hover:not(:disabled){background:#5349d8;border-color:#b8b3ff}.projects-heading>.btn-primary:focus-visible{outline-color:#e0ddff}@media (width<=600px){.projects-heading{flex-direction:column;align-items:flex-start;gap:16px;padding:24px}}.projects-toolbar{align-items:center;gap:16px;margin-bottom:24px;display:flex}.project-count{font-size:var(--fs-secondary);color:var(--text-soft);white-space:nowrap;font-variant-numeric:tabular-nums}.project-count b{color:var(--text);font-weight:650}.projects-search-wrap{flex:0 300px;align-items:center;min-width:180px;display:flex;position:relative}.projects-search-icon{color:var(--text-faint);pointer-events:none;position:absolute;left:11px}.projects-search-wrap:focus-within .projects-search-icon{color:var(--accent)}.projects-toolbar .projects-search{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-raised);width:100%;font-size:var(--fs-body);padding:7px 12px 7px 32px;transition:border-color .12s,box-shadow .12s}.projects-toolbar .projects-search:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #8b80f933}.projects-toolbar .projects-search::placeholder{color:var(--text-faint)}.project-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:24px;display:grid}.project-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);text-align:left;width:100%;max-width:420px;font:inherit;color:inherit;flex-direction:column;justify-self:center;padding:0;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex;position:relative;overflow:visible}.project-open{text-align:left;width:100%;min-width:0;color:inherit;font:inherit;cursor:pointer;border-radius:var(--radius) var(--radius) 0 0;background:0 0;border:0;padding:0;display:block}.project-open:focus-visible{outline-offset:-3px}.project-card:has(.project-menu[open]){z-index:5}.project-card:hover{border-color:var(--border-strong);transform:translateY(-2px);box-shadow:0 10px 28px #12161c1f}.project-cover{aspect-ratio:16/10;border-radius:var(--radius) var(--radius) 0 0;background:var(--bg-sunken);position:relative;overflow:hidden}.project-cover img{object-fit:cover;width:100%;height:100%;transition:transform .4s cubic-bezier(.2,.7,.2,1);display:block}.project-card:hover .project-cover img{transform:scale(1.04)}.project-cover-placeholder{color:var(--text-soft);background:var(--bg-sunken);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.project-cover-placeholder[data-tone="0"]{color:#8fa8c4;background:#1a222e}.project-cover-placeholder[data-tone="1"]{color:#a296c4;background:#201d2b}.project-cover-placeholder[data-tone="2"]{color:#c2a681;background:#292219}.project-cover-placeholder svg{width:56px;height:44px}.project-cover-label{z-index:1;color:#f4f4f2;letter-spacing:.04em;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;background:#181a18b8;border-radius:999px;max-width:calc(100% - 16px);padding:2px 8px;font-size:10px;font-weight:600;position:absolute;bottom:8px;left:8px;overflow:hidden}.project-info{flex-direction:column;flex:1;gap:8px;padding:16px;display:flex}.project-title{font-size:var(--fs-card);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;overflow:hidden}.project-description{color:var(--text-soft);font-size:var(--fs-body);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em;line-height:1.65;display:-webkit-box;overflow:hidden}.project-meta{font-size:var(--fs-secondary);color:var(--text-faint);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 12px;display:flex}.project-card-footer{border-top:1px solid var(--border);font-size:var(--fs-secondary);color:var(--text-faint);justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding:12px 16px;display:flex}.project-status{color:var(--text-soft);white-space:nowrap;background:#262c37;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:10px;font-weight:600;display:inline-flex}.project-status[data-stage=novel],.project-status[data-stage=event]{color:#9cc3fe;background:#6ea8fe24}.project-status[data-stage=script],.project-status[data-stage=storyboard]{color:#c9c3ff;background:#8b80f926}.project-status[data-stage=video]{color:#fcd34d;background:#fbbf2421}.project-count{font-variant-numeric:tabular-nums;white-space:nowrap}.project-menu{margin-left:auto;position:relative}.project-menu summary{white-space:nowrap;border-radius:var(--radius-sm);cursor:pointer;min-width:64px;height:28px;color:var(--text-soft);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-weight:500;list-style:none;transition:background .12s,color .12s;display:inline-flex}.project-menu summary::-webkit-details-marker{display:none}.project-menu summary:hover,.project-menu[open] summary{background:var(--bg-sunken);color:var(--text)}.project-menu-popover{z-index:10;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:96px;box-shadow:var(--shadow);flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;bottom:calc(100% + 4px);right:0}.project-menu-popover .btn{background:0 0;border-color:#0000;justify-content:flex-start;width:100%}.project-menu-popover .btn:not(.btn-danger):hover:not(:disabled){background:var(--bg-sunken);color:var(--text);border-color:#0000}.project-menu-popover .btn.btn-danger:hover:not(:disabled){background:var(--error-soft);color:var(--error);border-color:#0000}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-raised);color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;font-weight:550;transition:background .12s,border-color .12s,box-shadow .12s;display:inline-flex}.btn svg,.pill svg,.tab svg{flex:none}.btn-md{padding:6px 13px;font-size:12px}.btn-sm{padding:4px 9px;font-size:11px}.btn:hover:not(:disabled){background:var(--bg-inset);border-color:var(--text-faint)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px #8b80f94d}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 2px 8px #8b80f952}.btn-ghost{color:var(--text-soft);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--bg-sunken);color:var(--text);border-color:#0000}.btn-danger{background:var(--bg-raised);color:var(--error);border-color:#f8717173}.btn-danger:hover:not(:disabled){background:var(--error-soft);border-color:var(--error)}.btn-danger-ghost{color:var(--text-faint);background:0 0;border-color:#0000}.btn-danger-ghost:hover:not(:disabled){background:var(--error-soft);color:var(--error);border-color:#0000}.btn-spinner{opacity:.85;border:2px solid;border-right-color:#0000;border-radius:50%;width:11px;height:11px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.field{flex-direction:column;gap:5px;display:flex}.field-label{font-size:var(--fs-body);color:var(--text-soft);align-items:center;gap:3px;font-weight:600;display:flex}.field-required{color:var(--error)}.field-hint{font-size:var(--fs-secondary);color:var(--text-faint);line-height:1.5}.field-error{font-size:var(--fs-secondary);color:var(--error)}.input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-raised);width:100%;font-size:var(--fs-body);padding:6px 10px;transition:border-color .12s,box-shadow .12s}.input:hover:not(:disabled):not(:focus){border-color:var(--border-strong)}.input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #8b80f933}.input::placeholder{color:var(--text-faint)}.input:disabled{background:var(--bg-sunken);color:var(--text-faint)}.textarea{resize:vertical;min-height:72px;font-family:inherit;line-height:1.65}.textarea-code{font-family:var(--mono);font-size:var(--fs-body)}.select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%2360655f' d='M0 0h10L5 6z'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;padding-right:26px}.form-grid{gap:16px;display:grid}.pill{font-size:var(--fs-secondary);white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:1.5px 8px;font-weight:600;line-height:1.7;display:inline-flex}.pill-neutral{background:var(--bg-sunken);color:var(--text-soft);border-color:var(--border)}.pill-ok{background:var(--ok-soft);color:var(--ok)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-error{background:var(--error-soft);color:var(--error)}.pill-info{background:var(--info-soft);color:var(--info)}.pill-accent{background:var(--accent-soft);color:var(--accent)}.spinner-wrap{color:var(--text-soft);font-size:var(--fs-body);align-items:center;gap:8px;display:inline-flex}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:13px;height:13px;animation:.75s linear infinite spin}.center-state{place-items:center;min-height:180px;padding:48px 24px;display:grid}.empty{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--bg-inset);flex-direction:column;align-items:center;gap:10px;padding:36px 24px;display:flex}.empty-icon{width:56px;height:56px;color:var(--text-faint);background:var(--bg-raised);border:1px solid var(--border);border-radius:50%;place-items:center;margin-bottom:2px;display:grid}.empty-title{color:var(--text-soft);font-weight:600}.empty-hint{font-size:var(--fs-body);color:var(--text-faint);max-width:46ch;line-height:1.65}.empty-action{gap:8px;margin-top:8px;display:flex}.progress{background:var(--bg-sunken);border-radius:999px;height:5px;overflow:hidden}.progress-fill{border-radius:999px;height:100%;transition:width .35s}.progress-accent{background:var(--accent)}.progress-ok{background:var(--ok)}.progress-error{background:var(--error)}.section{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.section+.section{margin-top:16px}.section-head{background:var(--bg-raised);align-items:center;gap:12px;padding:12px 16px;display:flex}.section-title{font-size:var(--fs-card);font-weight:650}.section-subtitle{font-size:var(--fs-secondary);color:var(--text-faint);margin-top:2px}.section-actions{align-items:center;gap:8px;display:flex}.section-body{padding:16px}.section-dense .section-body{padding:0}.section-head+.section-body{border-top:1px solid var(--border)}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{cursor:pointer;color:var(--text-soft);font-size:var(--fs-body);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:8px 12px;font-weight:550;display:inline-flex}.tab:hover{color:var(--text)}.tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.tab-badge{background:var(--bg-sunken);color:var(--text-soft);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:16px;padding:0 6px;font-size:10px;font-weight:650}.tab.is-active .tab-badge{background:var(--accent-soft);color:var(--accent)}.modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#0405089e;place-items:center;padding:24px;animation:.14s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{border-radius:var(--radius-lg);background:#20242e;border:1px solid #3a4150;flex-direction:column;width:100%;max-height:calc(100vh - 48px);animation:.16s cubic-bezier(.2,.9,.3,1.1) pop;display:flex;box-shadow:0 0 0 1px #ffffff0a,0 24px 64px #000000a6}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.985)}}.modal-sm{max-width:420px}.modal-md{max-width:580px}.modal-lg{max-width:860px}.modal-head{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:16px;display:flex}.modal-title{font-size:var(--fs-section);letter-spacing:-.01em;flex:1;font-weight:650}.modal-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0 4px;font-size:21px;line-height:1}.modal-close:hover{color:var(--text);background:var(--bg-sunken)}.modal-body{padding:16px;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);background:var(--bg-raised);border-radius:0 0 var(--radius-lg) var(--radius-lg);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.confirm-message{color:var(--text-soft);line-height:1.75}.confirm-cost{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);font-size:var(--fs-body);font-variant-numeric:tabular-nums;flex-direction:column;gap:4px;padding:8px 12px;display:flex}.confirm-cost b{color:var(--text);font-size:var(--fs-card);font-weight:600}.toast-stack{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius);color:#f4f4f2;box-shadow:var(--shadow);font-size:var(--fs-body);pointer-events:auto;background:#26282a;align-items:center;gap:8px;max-width:min(520px,100vw - 40px);padding:8px 12px;animation:.18s slide-up;display:flex}@keyframes slide-up{0%{opacity:0;transform:translateY(8px)}}.toast-dot{background:#8b939e;border-radius:50%;flex:none;width:7px;height:7px}.toast-ok .toast-dot{background:#34d399}.toast-warn .toast-dot{background:#fbbf24}.toast-error .toast-dot{background:#f87171}.toast-text{flex:1;line-height:1.55}.toast-close{color:var(--text-faint);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.toast-close:hover{color:#fff}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:24px;display:grid}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:16px;transition:border-color .12s,box-shadow .12s,transform .12s}.card-clickable{cursor:pointer;text-align:left;width:100%;display:block}.card-clickable:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.card-head{align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.card-title{font-size:var(--fs-card);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:640;overflow:hidden}.card-desc{color:var(--text-soft);font-size:var(--fs-body);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em;line-height:1.65;display:-webkit-box;overflow:hidden}.card-foot{border-top:1px solid var(--border);font-size:var(--fs-secondary);color:var(--text-faint);align-items:center;gap:8px;margin-top:8px;padding-top:8px;display:flex}.workbench{grid-template-columns:var(--rail-width) minmax(0, 1fr) var(--inspector-width);height:100%;min-height:0;display:grid;position:relative}.workbench.is-left-collapsed{--rail-width:44px}.workbench.is-right-collapsed{--inspector-width:0px}.workbench.is-left-collapsed .rail-section,.workbench.is-right-collapsed .col-right{display:none}.rail-collapsed{align-items:center}.rail-toggle{width:28px;height:28px;color:var(--text-faint);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;flex:none;place-items:center;margin-top:10px;display:grid}.rail-toggle:hover{color:var(--text);background:var(--bg-sunken)}.rail{background:var(--bg-raised);border-right:1px solid var(--border);flex-direction:column;grid-column:1;min-width:0;min-height:0;display:flex;overflow:hidden}.col-center{background:var(--bg);flex-direction:column;grid-column:2;min-width:0;min-height:0;display:flex}.col-right{background:var(--bg-raised);border-left:1px solid var(--border);flex-direction:column;grid-column:3;min-width:0;min-height:0;display:flex;overflow:hidden}@media (width<=1100px){.workbench,.workbench.is-right-collapsed{grid-template-columns:var(--rail-width) minmax(0, 1fr)}.col-right{z-index:30;width:min(360px,100%);box-shadow:var(--shadow-lg);position:absolute;top:0;bottom:0;right:0}.workbench{position:relative}}@media (width<=760px){.workbench,.workbench.is-right-collapsed{grid-template-columns:minmax(0,1fr)}.col-center{grid-column:1}.workbench.is-left-collapsed .rail-section{display:none}.workbench.is-left-collapsed .rail{width:44px;box-shadow:none}.rail{z-index:40;width:min(320px,100%);box-shadow:var(--shadow-lg);border-right:1px solid var(--border);position:absolute;top:48px;bottom:0;left:0}.center-head{z-index:45;position:sticky;top:0}.workbench-tools{z-index:46;background:var(--bg-raised);position:sticky;top:0}}.rail-section+.rail-section{border-top:1px solid var(--border)}.rail-head{letter-spacing:.07em;color:var(--text-faint);text-transform:uppercase;align-items:center;gap:8px;padding:8px 12px;font-size:10px;font-weight:700;display:flex}.rail-head .grow{flex:1}.rail-list{flex-direction:column;gap:1px;padding:0 8px 8px;display:flex;overflow-y:auto}.rail-item{border-radius:var(--radius-sm);cursor:pointer;text-align:left;width:100%;color:var(--text);font-size:var(--fs-body);background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.rail-item:hover{background:var(--bg-sunken)}.rail-item.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.rail-item .label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rail-item .meta{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:10px}.rail-item.is-active .meta{color:var(--accent);opacity:.75}.rail-index{background:var(--bg-sunken);width:19px;height:19px;color:var(--text-soft);font-variant-numeric:tabular-nums;border-radius:5px;flex:none;place-items:center;font-size:10px;font-weight:700;display:grid}.rail-item.is-active .rail-index{background:var(--accent);color:#fff}.stage-flow{flex-direction:column;gap:1px;padding:4px 8px 8px;display:flex}.stage-step{border-radius:var(--radius-sm);cursor:pointer;text-align:left;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.stage-step:hover:not(:disabled){background:var(--bg-sunken)}.stage-step:disabled{cursor:not-allowed;opacity:.5}.stage-node{border:1.5px solid var(--border-strong);background:var(--bg-raised);width:17px;height:17px;color:var(--text-faint);border-radius:50%;flex:none;place-items:center;font-size:9.5px;font-weight:700;display:grid}.stage-step.is-done .stage-node{background:var(--ok);border-color:var(--ok);color:#fff}.stage-step.is-next .stage-node{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 3px #8b80f933}.stage-step.is-stale .stage-node{background:var(--warn-soft);color:var(--warn);border-color:#e0b45f}.stage-body{flex:1;min-width:0}.stage-name{font-size:var(--fs-body);font-weight:550;line-height:1.35;display:block}.stage-step.is-done .stage-name{color:var(--text)}.stage-step:disabled .stage-name{color:var(--text-faint)}.stage-note{color:var(--text-faint);font-size:10px;line-height:1.4;display:block}.stage-flag{color:var(--warn);background:var(--warn-soft);border-radius:4px;padding:0 6px;font-size:10px;font-weight:650}.center-head{background:var(--bg-raised);border-bottom:1px solid var(--border);flex:none;padding:0 16px}.workbench-tools{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:8px 0;display:flex}.workbench-tools .btn{font-size:var(--fs-body)}.workbench-tools .btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.workbench-tools .btn[aria-pressed=true]:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-hover)}.center-title-row{flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;display:flex}.center-title{font-size:var(--fs-section);letter-spacing:-.01em;flex:240px;min-width:0;font-weight:650;line-height:1.3}.center-title .muted{font-weight:500}.center-stats,.workbench-context{font-size:var(--fs-secondary);color:var(--text-faint);font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:wrap;gap:4px 16px;display:flex}.center-stats b,.workbench-context b{color:var(--text-soft);font-weight:650}.center-body{flex:1;min-height:0;padding:16px;overflow-y:auto}.right-body{flex:1;min-height:0;overflow-y:auto}.right-pane{border-bottom:1px solid var(--border)}.right-pane-head{letter-spacing:.07em;color:var(--text-faint);text-transform:uppercase;background:var(--bg-raised);z-index:2;border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 16px;font-size:10px;font-weight:700;display:flex;position:sticky;top:0}.right-pane-head .grow{flex:1}.inspector-close{flex:none}.asset-intro{font-size:var(--fs-secondary);color:var(--text-faint);border-bottom:1px solid var(--border);background:var(--bg-inset);margin:0;padding:8px 16px;line-height:1.6}.stack{flex-direction:column;gap:8px;display:flex}.row-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px}.row-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.row-head .title{color:var(--text);flex:1;min-width:0;font-size:15px;font-weight:650}.row-body{color:var(--text-soft);font-size:var(--fs-body);white-space:pre-wrap;word-break:break-word;line-height:1.7}.row-quote{border-left:2px solid var(--border-strong);background:var(--bg-inset);color:var(--text-faint);font-size:var(--fs-secondary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin-top:8px;padding:8px 8px 8px 12px;line-height:1.65}.chip-row{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.meta-row{font-size:var(--fs-secondary);color:var(--text-faint);flex-wrap:wrap;gap:4px 16px;margin-top:8px;display:flex}.meta-row b{color:var(--text-soft);font-weight:600}.dialogue{flex-direction:column;gap:6px;margin-top:8px;display:flex}.dialogue-line{font-size:var(--fs-body);gap:8px;line-height:1.7;display:flex}.dialogue-speaker{color:var(--text);flex:none;min-width:3.5em;font-weight:650}.dialogue-text{color:var(--text-soft);white-space:pre-wrap;word-break:break-word}.dialogue-paren{color:var(--text-faint);font-style:italic}.beats{color:var(--text-soft);font-size:var(--fs-body);margin:8px 0 0;padding-left:16px;line-height:1.7}.beats li{margin-bottom:2px}.shot-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:16px;display:grid}@supports (width:min(0px, 100%)){.shot-grid{max-width:1560px}}.shot-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.shot-thumb{aspect-ratio:16/9;color:var(--text-faint);font-size:var(--fs-secondary);border-bottom:1px solid var(--border);background:repeating-linear-gradient(135deg,#efefec 0 10px,#e8e9e5 10px 20px);place-items:center;display:grid;position:relative}.shot-thumb.has-video{aspect-ratio:auto;background:#12151a;display:block}.shot-thumb-hint{color:var(--text-faint)}.shot-thumb .idx{z-index:2;color:#fff;font-variant-numeric:tabular-nums;background:#181a18b8;border-radius:5px;padding:1px 8px;font-size:10px;font-weight:700;position:absolute;top:8px;left:8px}.shot-body{flex-direction:column;flex:1;gap:8px;padding:8px 16px 16px;display:flex}.shot-desc{font-size:var(--fs-body);color:var(--text);line-height:1.65}.shot-details{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);overflow:hidden}.shot-details summary{cursor:pointer;font-family:var(--mono);font-size:var(--fs-secondary);color:var(--text-faint);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:6px 8px;list-style:none;display:flex}.shot-details summary::-webkit-details-marker{display:none}.shot-details summary:before{content:"▸";font-size:9px;transition:transform .15s}.shot-details[open] summary:before{transform:rotate(90deg)}.shot-details[open] summary{border-bottom:1px solid var(--border)}.shot-prompt{font-family:var(--mono);font-size:var(--fs-secondary);color:var(--text-soft);white-space:pre-wrap;word-break:break-word;max-height:160px;padding:8px;line-height:1.6;overflow-y:auto}.shot-prompt:not(.shot-details .shot-prompt){border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset)}.shot-foot{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;padding-top:8px;display:flex}.asset-group+.asset-group{margin-top:16px}.asset-group-title{letter-spacing:.06em;color:var(--text-faint);text-transform:uppercase;align-items:center;gap:8px;margin-bottom:8px;font-size:10px;font-weight:700;display:flex}.asset-list{flex-direction:column;gap:8px;display:flex}.asset-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-inset);align-items:flex-start;gap:10px;padding:8px;display:flex}.asset-item-main{flex:1;min-width:0}.asset-item-head{align-items:center;gap:8px;display:flex}.asset-thumb-wrap{flex:none;position:relative}.asset-thumb{border:1px solid var(--border);background:var(--bg-sunken);border-radius:6px;width:64px;height:64px}.asset-thumb.is-empty{color:var(--text-faint);border-style:dashed;place-items:center;font-size:10px;display:grid}.asset-thumb-count{color:#fff;text-align:center;font-variant-numeric:tabular-nums;background:#18263ed1;border-radius:999px;min-width:16px;padding:0 4px;font-size:10px;line-height:16px;position:absolute;bottom:4px;right:4px}.authed-image{display:block;position:relative;overflow:hidden}.authed-image img{object-fit:cover;width:100%;height:100%;display:block}.authed-image-hit{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.authed-image-note{color:var(--text-faint);place-items:center;font-size:11px;display:grid;position:absolute;inset:0}.asset-gallery{flex-direction:column;gap:12px;display:flex}.asset-gallery-stage{background:var(--bg-sunken);border-radius:var(--radius);padding:12px}.asset-gallery-main{width:100%;height:52vh}.asset-gallery-main img{object-fit:contain}.asset-gallery-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.asset-gallery-strip{gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.asset-gallery-thumb{border:1px solid var(--border);background:var(--bg-sunken);border-radius:6px;flex:none;width:72px;height:72px}.asset-gallery-thumb.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.asset-name{font-weight:600;font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.asset-frag{font-size:var(--fs-secondary);color:var(--text-faint);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;line-height:1.6;display:-webkit-box;overflow:hidden}.timeline{flex-direction:column;gap:0;padding:4px 0;display:flex}.ev{font-size:var(--fs-body);grid-template-columns:62px 10px minmax(0,1fr);align-items:start;gap:8px;padding:4px 16px;display:grid}.ev-time{color:var(--text-faint);font-variant-numeric:tabular-nums;text-align:right;padding-top:2px;font-size:10px}.ev-rail{flex-direction:column;align-items:center;height:100%;padding-top:6px;display:flex}.ev-dot{background:var(--border-strong);border-radius:50%;flex:none;width:7px;height:7px}.ev-line{background:var(--border);flex:1;width:1px;min-height:6px;margin-top:3px}.ev-tone-info .ev-dot{background:var(--info)}.ev-tone-ok .ev-dot{background:var(--ok)}.ev-tone-warn .ev-dot{background:#d9a441}.ev-tone-error .ev-dot{background:var(--error)}.ev-body{min-width:0;padding-bottom:4px}.ev-kind{letter-spacing:.04em;color:var(--text-faint);text-transform:uppercase;font-size:10px;font-weight:700}.ev-msg{color:var(--text);white-space:pre-wrap;word-break:break-word;line-height:1.6}.ev-tone-error .ev-msg{color:var(--error)}.ev-tone-warn .ev-msg{color:var(--warn)}.ev-detail{font-family:var(--mono);font-size:var(--fs-secondary);background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word;max-height:224px;color:var(--text-soft);margin-top:4px;padding:8px;overflow:auto}.ev-detail-toggle{color:var(--accent);cursor:pointer;font-size:var(--fs-secondary);background:0 0;border:none;margin-top:4px;padding:0}.chat-log{flex-direction:column;gap:8px;padding:8px 16px;display:flex}.msg{flex-direction:column;gap:4px;display:flex}.msg-head{color:var(--text-faint);align-items:center;gap:6px;font-size:10px;display:flex}.msg-who{color:var(--text-soft);font-weight:650}.msg-bubble{border-radius:var(--radius);font-size:var(--fs-body);white-space:pre-wrap;word-break:break-word;padding:8px;line-height:1.7}.msg-user{align-items:flex-end}.msg-user .msg-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:3px}.msg-assistant .msg-bubble{background:var(--bg-inset);border:1px solid var(--border);border-bottom-left-radius:3px}.msg-tool .msg-bubble{background:var(--bg-sunken);border:1px dashed var(--border-strong);font-family:var(--mono);font-size:var(--fs-secondary);color:var(--text-soft);max-height:200px;overflow:auto}.msg-streaming .msg-bubble:after{content:"▌";color:var(--accent);animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.composer{border-top:1px solid var(--border);background:var(--bg-raised);flex:none;padding:8px 16px 16px}.composer-actions{align-items:center;gap:8px;margin-top:8px;display:flex}.composer-hint{font-size:var(--fs-secondary);color:var(--text-faint);flex:1}.composer .textarea{min-height:64px}.runbar{background:var(--info-soft);font-size:var(--fs-body);color:var(--info);border-bottom:1px solid #6ea8fe59;align-items:center;gap:8px;padding:8px 16px;display:flex}.runbar-error{background:var(--error-soft);color:var(--error);border-bottom-color:#f8717159}.runbar-warn{background:var(--warn-soft);color:var(--warn);border-bottom-color:#fbbf2459}.runbar .grow{flex:1}.login-page{isolation:isolate;background-color:#0c1526;background-image:url(/assets/login-bg-DUXXgKjU.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;place-items:center;height:100%;padding:24px;display:grid;position:relative;overflow:hidden}.login-page:before{content:"";z-index:-2;pointer-events:none;background:radial-gradient(1100px 780px at 50% 42%,#080e1c14 0%,#080e1c6b 78%,#060b169e 100%),linear-gradient(#070c1847,#070c185c);position:absolute;inset:0}.login-page:after{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(#e2e8f80d 1px,#0000 1.3px);background-position:50%;background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(120% 120% at 50% 45%,#0000 42%,#000c 100%);mask-image:radial-gradient(120% 120% at 50% 45%,#0000 42%,#000c 100%)}.login-shell{-webkit-backdrop-filter:blur(24px)saturate(150%);backdrop-filter:blur(24px)saturate(150%);border-radius:var(--radius-lg);background:linear-gradient(150deg,#1e2b4a6b 0%,#101a3057 46%,#1e2b4a66 100%);border:1px solid #ffffff29;grid-template-columns:1.04fr .96fr;width:100%;max-width:920px;min-height:528px;display:grid;position:relative;overflow:hidden;box-shadow:0 32px 80px #0308149e,inset 0 1px #ffffff2e}.login-shell:before{content:"";z-index:5;pointer-events:none;border-radius:inherit;background:linear-gradient(165deg,#ffffff29 0%,#ffffff0d 9%,#0000 20%);position:absolute;inset:0}.login-aside{color:#eef2fb;background:linear-gradient(160deg,#16223c66 0%,#0e172a47 100%);border-right:1px solid #ffffff1a;flex-direction:column;padding:32px 34px;display:flex;position:relative;overflow:hidden}.login-aside-image{z-index:0;object-fit:cover;object-position:center center;opacity:.42;width:100%;height:100%;position:absolute;inset:0}.login-aside:before{content:"";z-index:1;pointer-events:none;background:radial-gradient(360px 240px at 8% -12%,#7b73e947,#0000 62%),linear-gradient(#0b132466 0%,#0b132400 30% 58%,#0b132485 100%),linear-gradient(90deg,#0b13248c 0%,#0b132438 62%,#0b132400 100%);position:absolute;inset:0}.login-aside:after{content:"";z-index:1;pointer-events:none;background-image:radial-gradient(#ffffff12 1px,#0000 1.4px);background-position:50%;background-size:15px 15px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(150deg,#000000b3,#0000 60%);mask-image:linear-gradient(150deg,#000000b3,#0000 60%)}.login-aside>*{z-index:2;position:relative}.login-aside>.login-aside-image{z-index:0;position:absolute}.login-aside-top{align-items:center;gap:10px;display:flex}.login-aside-mark{object-fit:cover;border-radius:8px;width:30px;height:30px;display:block;box-shadow:0 4px 14px #7b73e966}.login-aside-brand{letter-spacing:.02em;color:#d7def0;font-size:12px;font-weight:650}.login-aside-body{flex-direction:column;flex:1;justify-content:center;gap:16px;margin:28px 0;display:flex}.login-aside-title{letter-spacing:-.01em;font-size:26px;font-weight:700;line-height:1.38}.login-aside-desc{color:#b4c1d8;font-size:13px;line-height:1.85}.login-points{flex-direction:column;gap:12px;margin:6px 0 0;padding:0;list-style:none;display:flex}.login-points li{color:#b4c1d8;align-items:flex-start;gap:10px;font-size:12.5px;line-height:1.7;display:flex}.login-points b{color:#eef2fb;margin-right:4px;font-weight:650}.login-point-dot{background:#9b94f2;border-radius:50%;flex:none;width:7px;height:7px;margin-top:7px;box-shadow:0 0 0 4px #9b94f229}.login-aside-foot{letter-spacing:.22em;color:#7e8faa;font-size:10px}.login-card{background:linear-gradient(160deg,#ffffff1a 0%,#ffffff0b 100%);align-self:center;width:100%;min-width:0;padding:40px 40px 32px;position:relative}.login-head{text-align:left;margin-bottom:24px}.login-mark{object-fit:cover;border-radius:10px;width:40px;height:40px;margin:0 0 14px;display:block;box-shadow:0 4px 16px #4f46e573}.login-title{letter-spacing:-.01em;color:#f4f7ff;font-size:22px;font-weight:680}.login-card .field-label{color:#e4eaf8d1}.login-card .field-required{color:#ff9b95}.login-card .input{color:#eef2fb;background:#ffffff14;border-color:#ffffff38}.login-card .input::placeholder{color:#e1e8f780}.login-card .input:hover:not(:disabled):not(:focus){border-color:#fff6}.login-card .input:focus{border-color:var(--accent);background:#ffffff1f;outline:none;box-shadow:0 0 0 3px #6366f147}.login-form{flex-direction:column;gap:16px;display:flex}.login-form .btn-primary{margin-top:4px;padding:8px 13px}.login-error{color:#ffc4be;border-radius:var(--radius-sm);font-size:var(--fs-body);background:#f4625829;border:1px solid #f462584d;padding:8px 10px;line-height:1.6}.login-notice{color:#a9b8d8;border-radius:var(--radius-sm);font-size:var(--fs-body);background:#78a0ff1a;border:1px solid #78a0ff38;padding:8px 10px;line-height:1.7}.board-filters{gap:10px;margin-bottom:14px;display:flex}.board-filters .select{width:180px}.board-filters .input:not(.select){flex:1}.link-like{color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.link-like:hover{color:var(--accent,#7aa2ff);text-decoration:underline}@media (width<=900px){.login-shell{grid-template-columns:1fr;max-width:400px;min-height:0}.login-aside{display:none}.login-card{padding:32px 24px 24px}.login-head{text-align:center}.login-mark{margin:0 auto 14px}}.settings-layout{grid-template-columns:176px minmax(0,1fr);align-items:start;gap:24px;display:grid}.settings-nav{flex-direction:column;gap:2px;display:flex;position:sticky;top:0}.settings-nav button{text-align:left;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-soft);font-size:var(--fs-body);background:0 0;border:none;padding:8px;font-weight:550}.settings-nav button:hover{background:var(--bg-sunken);color:var(--text)}.settings-nav button.is-active{background:var(--accent-soft);color:var(--accent);font-weight:620}@media (width<=860px){.settings-layout{grid-template-columns:1fr}.settings-nav{flex-flow:wrap;position:static}}.kv-table{border-collapse:collapse;width:100%;font-size:var(--fs-body)}.kv-table th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--border);background:var(--bg-inset);white-space:nowrap;padding:8px;font-size:10px;font-weight:700}.kv-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px}.kv-table tr:last-child td{border-bottom:none}.kv-table tr:hover td{background:var(--bg-inset)}.kv-name{font-weight:600}.kv-sub{font-size:var(--fs-secondary);color:var(--text-faint);font-family:var(--mono);word-break:break-all}.cell-actions{justify-content:flex-end;gap:8px;display:flex}.text-right{text-align:right}.skill-layout{grid-template-columns:288px minmax(0,1fr);align-items:start;gap:16px;height:100%;padding:16px;display:grid}@media (width<=900px){.skill-layout{grid-template-columns:1fr}}.skill-list{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;max-height:100%;display:flex;overflow:hidden}.skill-list-head{border-bottom:1px solid var(--border);background:var(--bg-raised);align-items:center;gap:8px;padding:8px 8px 8px 12px;display:flex}.skill-items{padding:4px 8px;overflow-y:auto}.skill-item{border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:none;flex-direction:column;gap:2px;width:100%;padding:8px;display:flex}.skill-item:hover{background:var(--bg-sunken)}.skill-item.is-active{background:var(--accent-soft)}.skill-item .n{font-weight:600;font-size:var(--fs-body);color:var(--text)}.skill-item.is-active .n{color:var(--accent)}.skill-item .d{font-size:var(--fs-secondary);color:var(--text-faint);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.skill-view{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;max-height:100%;display:flex;overflow:hidden}.skill-view-head{border-bottom:1px solid var(--border);background:var(--bg-raised);padding:8px 16px}.skill-view-body{line-height:1.8;font-size:var(--fs-body);padding:16px;overflow-y:auto}.md h1,.md h2,.md h3{margin:16px 0 8px;font-weight:650;line-height:1.4}.md h1{font-size:var(--fs-card)}.md h2{font-size:var(--fs-body);border-bottom:1px solid var(--border);padding-bottom:4px}.md h3{font-size:var(--fs-body)}.md h1:first-child,.md h2:first-child,.md h3:first-child{margin-top:0}.md p{margin:8px 0}.md ul,.md ol{margin:8px 0;padding-left:24px}.md li{margin:4px 0}.md code{background:var(--bg-sunken);font-size:var(--fs-secondary);border-radius:4px;padding:1px 6px}.md pre{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);margin:8px 0;padding:8px 12px;overflow-x:auto}.md pre code{background:0 0;padding:0}.md blockquote{border-left:3px solid var(--border-strong);color:var(--text-soft);background:var(--bg-inset);margin:8px 0;padding:4px 12px}.md hr{border:none;border-top:1px solid var(--border);margin:16px 0}.md-table-wrap{margin:8px 0;overflow-x:auto}.md table{border-collapse:collapse;width:100%;min-width:420px;font-size:var(--fs-body);margin:0}.md th,.md td{border:1px solid var(--border);text-align:left;padding:4px 8px}.md th{background:var(--bg-inset);font-weight:650}.md strong{font-weight:650}.inline{align-items:center;gap:8px;display:flex}.inline-wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--text-faint)}.soft{color:var(--text-soft)}.small{font-size:var(--fs-secondary)}.mt-8{margin-top:8px}.mt-12,.mt-16{margin-top:16px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:16px}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nowrap{white-space:nowrap}.divider{background:var(--border);height:1px;margin:16px 0}.link-btn{font:inherit;color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.link-btn:hover:not(:disabled){text-decoration:underline}.link-btn:disabled{color:var(--text-faint);cursor:default}.link-btn code{font-size:var(--fs-body)}.extra-file{border-left:2px solid var(--accent);margin-top:8px;padding:4px 0 4px 16px}.ml-8{margin-left:8px}.search-row{grid-template-columns:minmax(0,1fr) 148px;align-items:end;gap:16px;display:grid}.video-stage{border:1px solid var(--border);border-radius:var(--radius);background:#12151a;place-items:center;min-height:180px;display:grid;overflow:hidden}.video-stage img,.video-stage video{width:100%;height:auto;display:block}.clip-stage{background:#12151a;width:100%;display:block;position:relative}.clip-cover{cursor:pointer;background:#0c0f131f;border:0;place-items:center;width:100%;height:100%;margin:0;padding:0;transition:background .15s;display:grid;position:absolute;inset:0}.clip-cover:hover{background:#0c0f1347}.clip-loading,.clip-error{background:#12151a;border:0;place-items:center;width:100%;padding:0;display:grid;position:relative}.clip-cover:hover .clip-play{background:var(--accent);border-color:var(--accent)}.clip-play{color:#fff;z-index:1;background:#ffffff29;border:1px solid #ffffff4d;border-radius:50%;place-items:center;width:42px;height:42px;padding-left:3px;font-size:14px;transition:background .15s,border-color .15s;display:grid;position:relative;box-shadow:0 2px 10px #00000059}.clip-badge{z-index:2;color:#fff;font-variant-numeric:tabular-nums;background:#181a18c7;border-radius:5px;padding:1px 8px;font-size:10px;position:absolute;bottom:8px;right:8px}.clip-video{object-fit:contain;background:#12151a;width:100%;height:auto;display:block}.clip-loading,.clip-error{font-size:var(--fs-secondary);text-align:center;padding:0 12px}.clip-loading{color:var(--text-faint)}.clip-error{color:var(--danger,#d9534f)}.clip-foot a:hover{text-decoration:underline}.kind-filter{border:1px solid var(--border);border-radius:var(--radius);gap:2px;padding:2px;display:flex}.kind-filter-item{border-radius:calc(var(--radius) - 2px);color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:4px 12px;font-size:13px}.kind-filter-item.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.kind-picker{grid-template-columns:1fr 1fr;gap:10px;display:grid}.kind-picker-item{text-align:left;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;flex-direction:column;gap:6px;padding:12px;display:flex}.kind-picker-item span{color:var(--text-dim);font-size:12px;line-height:1.5}.kind-picker-item.is-active{border-color:var(--accent);background:var(--accent-soft)}.project-kind{border:1px solid var(--border);color:var(--text-dim);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.assignment-list{flex-direction:column;gap:12px;display:flex}.assignment-card{border:1px solid var(--border,#ffffff1a);border-radius:var(--radius-sm);padding:12px 14px}.assignment-card-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.assignment-desc{font-size:var(--fs-body);white-space:pre-wrap;margin:8px 0 0;line-height:1.7}.assignment-status-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;display:flex}.assignment-feedback{width:100%;font-size:var(--fs-body);color:var(--text-soft,#a9b8d8);margin:6px 0 0}
