:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-hover: #292e36;--bg-input: #0d1117;--border: #30363d;--border-focus: #58a6ff;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--text-link: #58a6ff;--accent: #2f81f7;--accent-hover: #388bfd;--accent-muted: rgba(47, 129, 247, .15);--success: #3fb950;--success-muted: rgba(63, 185, 80, .15);--warning: #d29922;--warning-muted: rgba(210, 153, 34, .15);--danger: #f85149;--danger-muted: rgba(248, 81, 73, .15);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--sidebar-width: 220px;--sidebar-collapsed: 56px;--header-height: 56px;--font-mono: "SF Mono", "Cascadia Code", "Consolas", monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--bg: var(--bg-primary);--bg-card: var(--bg-secondary);--bg-elevated: var(--bg-tertiary);--text: var(--text-primary);--text-tertiary: var(--text-muted);--text-on-accent: #fff;--border-strong: #3d444d}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline}input,button,textarea,select{font:inherit;color:inherit}input[type=text],input[type=password],input[type=email],input[type=search],input[type=number]{width:100%;padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);outline:none;transition:border-color .15s}select,textarea,.input{padding:8px 12px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);outline:none;transition:border-color .15s}textarea,.input{width:100%}select option{background:var(--bg-elevated);color:var(--text-primary)}input[type=search]::-webkit-search-cancel-button{display:none}input:focus,select:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-muted)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;font-size:14px;font-weight:500;transition:background .15s,border-color .15s;white-space:nowrap}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--bg-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.film-entry,.film-entry:hover{text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-danger{background:var(--danger-muted);border-color:var(--danger);color:var(--danger)}.btn-danger:hover{background:var(--danger);color:#fff}.btn-success{background:var(--success-muted);border-color:var(--success);color:var(--success)}.btn-success:hover{background:var(--success);color:#fff}.btn-sm{padding:4px 10px;font-size:12px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:500;line-height:1.4}.badge-pro{background:var(--accent-muted);color:var(--accent)}.badge-free{background:var(--bg-tertiary);color:var(--text-secondary)}.badge-pending{background:var(--warning-muted);color:var(--warning)}.badge-danger{background:var(--danger-muted);color:var(--danger)}.badge-success{background:var(--success-muted);color:var(--success)}.card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}th{font-weight:600;color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;background:var(--bg-secondary)}tr:hover td{background:var(--bg-hover)}.row-link-cell{position:relative}.row-link{color:inherit;text-decoration:none}.row-link:hover{text-decoration:none}.row-link:after{content:"";position:absolute;inset:0}.row-link-overlay{position:absolute;inset:0}button:focus-visible,a:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.skeleton{background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.8}}@keyframes spin{to{transform:rotate(360deg)}}.toast-container{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 16px;border-radius:var(--radius-md);font-size:13px;font-weight:500;box-shadow:var(--shadow-md);animation:toast-in .2s ease-out;max-width:360px}.toast-success{background:var(--success-muted);border:1px solid var(--success);color:var(--success)}.toast-error{background:var(--danger-muted);border:1px solid var(--danger);color:var(--danger)}.toast-info{background:var(--accent-muted);border:1px solid var(--accent);color:var(--text-link)}@keyframes toast-in{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.text-muted{color:var(--text-secondary)}.text-sm{font-size:12px}.text-mono{font-family:var(--font-mono)}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-4{margin-bottom:16px}.gap-2{gap:8px}.gap-4{gap:16px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border)}.detail-grid{display:grid;grid-template-columns:1fr 340px;gap:20px}.tabs-sticky{position:sticky;top:0;z-index:10;background:var(--bg-primary)}.stat-pills{display:flex;gap:12px;flex-wrap:wrap}.scroll-fade-right{-webkit-mask-image:linear-gradient(to right,black 85%,transparent);mask-image:linear-gradient(to right,black 85%,transparent)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:1199px){.detail-grid{grid-template-columns:1fr}.tabs-sticky{position:sticky;top:0}}@media(max-width:767px){.detail-grid{grid-template-columns:1fr}.stat-pills{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:8px;padding-bottom:4px}.stat-pills>*{scroll-snap-align:start;flex-shrink:0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.film-review{--film-bg: var(--bg-secondary, #161b22);--film-surface: var(--bg-tertiary, #21262d);--film-hover: var(--bg-hover, #292e36);--film-border: var(--border, #30363d);--film-text: var(--text, #e6edf3);--film-text-secondary: var(--text-secondary, #8b949e);--film-accent: var(--accent, #2f81f7);--film-accent-hover: var(--accent-hover, #388bfd);--film-success: var(--success, #3fb950);--film-danger: var(--danger, var(--error, #f85149));--film-warning: var(--warning, #d29922);--film-radius: var(--radius-sm, 4px);--film-mono: var(--font-mono, "SF Mono", "Cascadia Code", Consolas, monospace);color:var(--film-text)}.film-player{display:block}.film-player:focus{outline:none}.film-player:focus-visible{outline:2px solid var(--film-accent);outline-offset:2px}.film-video{display:block;width:100%;aspect-ratio:16 / 9;background:#000;border-radius:var(--film-radius)}.film-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:8px}.film-seek-group{display:flex;gap:4px;flex:0 0 auto}.film-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 14px;font-family:inherit;font-size:14px;font-weight:500;color:var(--film-text);background:var(--film-surface);border:1px solid var(--film-border);border-radius:var(--film-radius);cursor:pointer}.film-btn:hover:not(:disabled){background:var(--film-hover)}.film-btn:focus-visible{outline:2px solid var(--film-accent);outline-offset:2px}.film-btn:disabled{opacity:.5;cursor:not-allowed}.film-btn-sm{padding:4px 10px;font-size:12px}.film-btn-primary{background:var(--film-accent);border-color:var(--film-accent);color:#fff;font-weight:600}.film-btn-primary:hover:not(:disabled){background:var(--film-accent-hover)}.film-go{display:grid;grid-template-columns:auto 12ch auto;align-items:center;gap:6px;flex:0 0 auto}.film-go .film-alert{grid-column:1 / -1}.film-go-label{font-size:12px;color:var(--film-text-secondary);white-space:nowrap}.film-input{width:100%;min-width:0;padding:8px 10px;font-size:16px;font-family:inherit;color:var(--film-text);background:var(--bg, #0d1117);border:1px solid var(--film-border);border-radius:var(--film-radius);min-height:44px}.film-input:focus-visible{outline:2px solid var(--film-accent);outline-offset:1px}.film-input[aria-invalid=true]{border-color:var(--film-danger)}.film-input-time{font-family:var(--film-mono);text-align:center}.film-textarea{min-height:96px;resize:vertical;line-height:1.5}.film-alert{border-radius:0;border-left:3px solid var(--film-danger);background:var(--film-surface);color:var(--film-text);padding:8px 12px;font-size:14px;margin:6px 0 0}.film-note{font-size:12px;color:var(--film-text-secondary);margin:6px 0 0}.film-note-strong{font-size:14px;color:var(--film-text);margin:0}.film-file{font-family:var(--film-mono);font-size:13px;word-break:break-all}.film-missing{border-radius:0;border-left:3px solid var(--film-warning);background:var(--film-surface);padding:16px}.film-missing-title{font-size:16px;margin:0 0 6px}.film-missing-body{font-size:14px;color:var(--film-text);margin:0 0 12px}.film-shortcuts{margin-top:8px;padding:12px;background:var(--film-surface);border:1px solid var(--film-border);border-radius:var(--film-radius)}.film-shortcuts-title{font-size:13px;margin:0 0 8px}.film-shortcut-list{margin:0;display:grid;gap:4px}.film-shortcut-row{display:grid;grid-template-columns:10ch 1fr;gap:8px;font-size:13px}.film-shortcut-row dd{margin:0;color:var(--film-text-secondary)}.film-shortcut-row kbd{font-family:var(--film-mono);font-size:12px;background:var(--film-bg);border:1px solid var(--film-border);border-radius:var(--film-radius);padding:1px 5px}.film-review-grid{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-rows:auto 1fr;gap:16px;align-items:start}.film-review-stage{grid-column:1;grid-row:1;min-width:0}.film-review-detail{grid-column:1;grid-row:2;min-width:0;display:flex;flex-direction:column;gap:16px}.film-review-notes{grid-column:2;grid-row:1 / span 2;min-width:0;display:flex;flex-direction:column;gap:16px}.film-review-notes .film-entry-row{grid-template-columns:1fr}.film-review-notes .film-composer-stamp .film-note,.film-review-notes .film-composer-name .film-note{grid-column:1 / -1}@media(max-width:1199px){.film-review-grid{grid-template-columns:minmax(0,1fr)}.film-review-stage,.film-review-notes,.film-review-detail{grid-column:1;grid-row:auto}.film-review-stage{order:1}.film-review-notes{order:2}.film-review-detail{order:3}}.film-transport{display:grid;gap:4px;margin-top:8px}.film-ribbon{position:relative;height:56px;width:100%}.film-ribbon-track{display:flex;gap:2px;height:100%;width:100%;background:var(--film-bg);border:1px solid var(--film-border);border-radius:var(--film-radius);overflow:hidden}.film-ribbon-seg{padding:0;border:0;border-radius:0;background:var(--film-surface);cursor:pointer}.film-ribbon-seg:hover{background:var(--film-hover)}.film-ribbon-seg-active{background:var(--film-hover);box-shadow:inset 0 -4px 0 0 var(--film-accent)}.film-ribbon-seg-empty{background:repeating-linear-gradient(45deg,var(--film-surface),var(--film-surface) 3px,var(--film-bg) 3px,var(--film-bg) 6px)}.film-ribbon-head{position:absolute;top:0;bottom:0;left:0;width:2px;margin-left:-1px;background:var(--film-text);pointer-events:none}@media(max-width:480px){.film-ribbon{height:40px}.film-ribbon-seg{pointer-events:none;cursor:default}}.film-timeline-wrap{margin-top:8px}.film-timeline-label{margin:0 0 2px;font-size:12px;color:var(--film-text-secondary)}.film-timeline{position:relative;height:44px;width:100%}.film-timeline:before{content:"";position:absolute;left:0;right:0;top:19px;height:6px;background:var(--film-surface);border-radius:0}.film-timeline[data-interactive=true]{cursor:pointer}.film-playhead{position:absolute;top:12px;width:2px;height:20px;margin-left:-1px;background:var(--film-text)}.film-timeline[data-empty=true]:before{background:transparent;border-top:2px dashed var(--film-border);height:0;border-radius:0}.film-marker{position:absolute;top:0;height:44px;width:24px;margin-left:-12px;padding:0;border:0;background:none;cursor:pointer}.film-marker:hover,.film-marker:focus-visible{z-index:2}.film-marker:after{content:"";position:absolute;left:50%;top:15px;width:14px;height:14px;transform:translate(-50%);border-radius:50%;background:var(--film-accent);box-shadow:0 0 0 2px var(--film-bg)}.film-marker-beyond:after{border-radius:0;width:12px;height:18px;top:13px;background:var(--film-warning);box-shadow:none;clip-path:polygon(0 0,100% 50%,0 100%)}.film-marker-resolved:after{background:var(--film-surface);box-shadow:0 0 0 2px var(--film-text-secondary)}.film-marker-active:after{outline:2px solid var(--film-text);outline-offset:2px}.film-marker-preview{position:absolute;bottom:40px;z-index:3;width:max-content;max-width:280px;padding:6px 8px;font-size:12px;line-height:1.35;text-align:left;white-space:normal;color:var(--film-text);background:var(--film-bg);border:1px solid var(--film-border);border-radius:0;border-left:3px solid var(--film-accent);box-shadow:0 4px 12px #00000073;pointer-events:none;visibility:hidden}.film-marker-preview[data-side=left]{left:0}.film-marker-preview[data-side=right]{right:0}.film-marker:hover .film-marker-preview,.film-marker:focus-visible .film-marker-preview{visibility:visible}.film-marker-beyond .film-marker-preview{border-left-color:var(--film-warning)}.film-marker-resolved .film-marker-preview{border-left-color:var(--film-success)}.film-comment-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:4px}.film-comment-empty{padding:16px}.film-thread{display:grid;gap:4px}.film-entry-row{display:grid;grid-template-columns:1fr auto;align-items:start;gap:8px}.film-reply-list{list-style:none;margin:0 0 0 14px;padding:0 0 0 10px;display:grid;gap:4px;border-left:2px solid var(--film-border)}.film-thread-toggle{justify-self:start;margin-left:14px}.film-entry{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"time who" "body body" "state state";gap:2px 8px;width:100%;min-height:44px;text-align:left;padding:8px 10px;font-family:inherit;font-size:14px;color:var(--film-text);background:var(--film-bg);border:1px solid var(--film-border);border-radius:0;border-left:3px solid transparent;cursor:pointer}.film-entry:hover{background:var(--film-hover)}.film-entry:focus-visible{outline:2px solid var(--film-accent);outline-offset:2px}.film-entry-active{border-left-color:var(--film-accent);background:var(--film-hover);font-weight:600}.film-entry-beyond{border-left-color:var(--film-warning)}.film-entry-reply{background:var(--film-surface);min-height:36px}.film-entry-time{grid-area:time;font-family:var(--film-mono);font-size:13px}.film-entry-kicker{grid-area:time;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--film-text-secondary)}.film-entry-who{grid-area:who;color:var(--film-text-secondary);font-size:13px}.film-entry-body{grid-area:body}.film-entry-state{grid-area:state;font-size:12px;color:var(--film-text-secondary)}.film-entry-state-resolved{color:var(--film-success);font-weight:600}.film-entry-actions{display:flex;gap:4px;align-items:center}.film-badge{display:inline-block;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;border-radius:var(--film-radius);border:1px solid var(--film-border);background:var(--film-surface);color:var(--film-text)}.film-badge-you{border-color:var(--film-accent)}.film-badge-recipient{font-family:var(--film-mono);font-weight:400}.film-composer{display:grid;gap:6px;margin-top:12px;padding:12px;background:var(--film-bg);border:1px solid var(--film-border);border-radius:var(--film-radius)}.film-composer-stamp,.film-composer-name{display:grid;grid-template-columns:auto 12ch 1fr;align-items:center;gap:6px}.film-composer-name{grid-template-columns:auto minmax(0,20ch) 1fr}.film-composer-stamp .film-alert,.film-composer-name .film-alert,.film-composer-stamp .film-note,.film-composer-untimed{grid-column:1 / -1}.film-composer-untimed{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--film-text);cursor:pointer}.film-composer-untimed input{margin:0;flex-shrink:0}.film-composer-actions{display:flex;gap:8px;flex-wrap:wrap}.film-composer-replying{margin:0}.film-animatic:focus-visible{outline:2px solid var(--film-accent);outline-offset:2px}.film-animatic-stage{position:relative;width:100%;aspect-ratio:16 / 9;background:#000;border-radius:var(--film-radius);overflow:hidden}.film-animatic-still{width:100%;height:100%;object-fit:contain;display:block}.film-animatic-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:100%;height:100%;padding:16px;text-align:center;background:var(--film-surface);border:1px dashed var(--film-border)}.film-animatic-placeholder-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--film-text-secondary)}.film-animatic-placeholder-title{font-size:18px;font-weight:600;color:var(--film-text)}.film-animatic-caption{margin:8px 0 0;font-size:16px}.film-scrub{display:block;width:100%;min-width:120px;height:44px;cursor:pointer}.film-scrub:focus-visible{outline:2px solid var(--film-accent);outline-offset:2px}.film-clock{font-family:var(--film-mono);font-size:13px;color:var(--film-text-secondary)}.film-time-value{display:inline-block;font-family:var(--film-mono);font-variant-numeric:tabular-nums;min-width:7ch;text-align:center}@media(max-width:480px){.film-entry-row{grid-template-columns:1fr}.film-go{grid-template-columns:auto 1fr auto}.film-composer-stamp,.film-composer-name{grid-template-columns:auto 1fr}.film-composer-stamp .film-note,.film-composer-name .film-note{grid-column:1 / -1}.film-controls{gap:6px}}@media(prefers-reduced-motion:reduce){.film-review *,.film-review *:before,.film-review *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
