:root{--ui-bg: #ffffff;--ui-fg: #1b1b1f;--ui-muted: #74747c;--ui-border: rgba(20, 20, 30, .1);--ui-hover: rgba(20, 20, 40, .06);--ui-active: #ecebff;--accent: #5b5bd6;--accent-fg: #ffffff;--danger: #e5484d;--shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 6px 20px rgba(0, 0, 0, .08);--radius: 12px;font-family:Inter,system-ui,-apple-system,sans-serif;color:var(--ui-fg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}html.on-board,html.on-board body,.board,.canvas{overscroll-behavior:none}body{background:#f6f6f4;overflow:hidden}button,input,select{font:inherit;color:inherit}.theme-dark{--ui-bg: #28282c;--ui-fg: #ececf0;--ui-muted: #9a9aa3;--ui-border: rgba(255, 255, 255, .09);--ui-hover: rgba(255, 255, 255, .08);--ui-active: rgba(124, 124, 255, .22);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 12px;border:0;border-radius:8px;background:transparent;cursor:pointer;text-decoration:none;white-space:nowrap;color:var(--ui-fg)}.btn:hover:not(:disabled){background:var(--ui-hover)}.btn:disabled{opacity:.35;cursor:default}.btn.icon{width:34px;padding:0}.btn.active{background:var(--ui-active);color:var(--accent)}.theme-dark .btn.active{color:#b4b4ff}.btn.primary{background:var(--accent);color:var(--accent-fg);font-weight:600}.btn.primary:hover:not(:disabled){background:#4c4cc4}.btn.danger:hover{color:var(--danger)}.panel{background:var(--ui-bg);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--ui-border);padding:4px}.row{display:flex;align-items:center;gap:4px}.hint{font-size:12px;color:var(--ui-muted);margin:8px 2px 0;line-height:1.4}.board{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;color:var(--ui-fg)}.panel,.toolbar,.context-bar,.popover,.modal{color:var(--ui-fg)}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;cursor:default}.canvas.tool-hand,body.space-pan .canvas{cursor:grab}body.is-panning .canvas{cursor:grabbing}.canvas.tool-shape,.canvas.tool-text,.canvas.tool-frame{cursor:crosshair}.canvas.dropping:after{content:"Drop to add to the board";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:2px dashed var(--accent);border-radius:16px;display:grid;place-items:center;font-weight:600;color:var(--accent);background:#5b5bd60f;pointer-events:none}.world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}body.is-dragging iframe,body.is-panning iframe,body.space-pan iframe{pointer-events:none}.item{position:absolute;left:0;top:0}.item-image{overflow:hidden}.item-image img{width:100%;height:100%;object-fit:cover;display:block;border-radius:2px;-webkit-user-drag:none;pointer-events:none}.item-video{background:#111;border-radius:6px;overflow:hidden;box-shadow:0 2px 10px #0000002e}.video-frame{position:relative;width:100%;background:#000}.video-frame iframe,.video-frame video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;display:block}.video-poster{position:absolute;top:0;right:0;bottom:0;left:0}.video-poster img,.video-poster video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.play-btn{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;background:#0000008c;color:#fff;display:grid;place-items:center;cursor:pointer;transition:transform .15s,background .15s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transform:scale(max(.35,min(1.4,calc(var(--inv) * .9))))}.play-btn svg{margin-left:3px}.play-btn:hover{background:#e5484df2}.video-bar{display:flex;align-items:center;gap:8px;padding:0 10px;color:#d8d8de;font-size:12px;background:#18181b;cursor:move}.provider{font-weight:700;font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:2px 5px;border-radius:4px;background:#333;color:#fff}.provider-youtube{background:#e62117}.provider-vimeo{background:#17b3e8}.video-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.video-stop{border:0;background:#333;color:#fff;width:20px;height:20px;border-radius:4px;display:grid;place-items:center;cursor:pointer}.text-wrap{width:100%}.text-body{white-space:pre-wrap;overflow-wrap:break-word;line-height:1.3;outline:none;min-height:1.3em}.text-body.editor{cursor:text;user-select:text;-webkit-user-select:text}.text-body.editor:empty:before{content:"Type something";opacity:.35}.sel-box,.sel-outline,.marquee{position:absolute;left:0;top:0;pointer-events:none}.sel-box{outline:calc(var(--inv) * 2px) solid var(--accent);z-index:1000000}.sel-box.is-editing{outline-style:dashed;outline-width:calc(var(--inv) * 1.5px)}.sel-outline{outline:calc(var(--inv) * 1px) solid var(--accent);z-index:1000000;opacity:.6}.handle{position:absolute;width:calc(var(--inv) * 12px);height:calc(var(--inv) * 12px);background:#fff;border:calc(var(--inv) * 2px) solid var(--accent);border-radius:50%;pointer-events:auto;transform:translate(-50%,-50%)}.handle-nw{left:0;top:0;cursor:nwse-resize}.handle-se{left:100%;top:100%;cursor:nwse-resize}.handle-ne{left:100%;top:0;cursor:nesw-resize}.handle-sw{left:0;top:100%;cursor:nesw-resize}.handle-e,.handle-w{top:50%;height:calc(var(--inv) * 22px);width:calc(var(--inv) * 8px);border-radius:calc(var(--inv) * 4px);cursor:ew-resize}.handle-e{left:100%}.handle-w{left:0}.marquee{background:#5b5bd614;outline:calc(var(--inv) * 1px) solid var(--accent);z-index:1000001}.peer-cursor{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none;z-index:1000002;transition:transform .08s linear}.peer-cursor span{position:absolute;left:14px;top:18px;color:#fff;font-size:12px;font-weight:600;padding:2px 7px;border-radius:6px;white-space:nowrap}.topbar{position:absolute;top:12px;left:12px;right:12px;display:flex;justify-content:space-between;pointer-events:none;gap:8px}.topbar>*{pointer-events:auto}.back-link{max-width:160px}.back-link .back-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-name{border:0;background:transparent;font-weight:600;font-size:15px;padding:6px 8px;border-radius:8px;min-width:0;outline:none}.board-name:hover,.board-name:focus{background:var(--ui-hover)}.status{width:8px;height:8px;border-radius:50%;margin:0 8px 0 2px;background:#aaa;flex:none}.status-online{background:#30a46c}.status-offline{background:#f5a524}.avatars{display:flex;align-items:center;padding:0 4px}.avatars .pop-wrap .btn{width:auto;padding:0}.avatar{width:28px;height:28px;border-radius:50%;color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;border:2px solid var(--ui-bg);margin-left:-6px}.avatars>:first-child .avatar{margin-left:0}.avatar.more{background:#888}.share{margin-left:4px}.toolbar{position:absolute;left:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;padding:5px;background:var(--ui-bg);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--ui-border)}.toolbar .btn.tool,.toolbar .pop-wrap>.btn{width:40px;height:40px;padding:0}.tool-split{position:relative}.tool-split .mini{position:absolute;right:-2px;bottom:-2px}.tool-split .mini>.btn{width:16px!important;height:16px!important;border-radius:50%}.divider{height:1px;background:var(--ui-border);margin:4px 6px}.zoom{position:absolute;right:12px;bottom:12px}.zoom-label{min-width:58px;font-variant-numeric:tabular-nums;font-size:13px;padding:0 6px}.context-bar{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;background:var(--ui-bg);border-radius:10px;box-shadow:var(--shadow);border:1px solid var(--ui-border);z-index:10}.context-bar .sep{width:1px;align-self:stretch;margin:4px;background:var(--ui-border)}.size-label{min-width:26px;text-align:center;font-size:13px;font-variant-numeric:tabular-nums}.font-select{height:30px;border:1px solid var(--ui-border);border-radius:7px;background:var(--ui-bg);padding:0 6px;margin:0 2px;cursor:pointer}.swatch{width:18px;height:18px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.12)}.swatch.ring{box-shadow:inset 0 0 0 1px #00000026}.swatch.tiny{width:12px;height:12px;border:1.5px solid var(--ui-bg);box-shadow:0 0 0 1px #0003}.swatch.big{width:28px;height:28px;cursor:pointer;padding:0}.swatch.big:hover{transform:scale(1.1)}.swatches{display:grid;grid-template-columns:repeat(5,28px);gap:8px}.pop-wrap{position:relative}.popover{position:absolute;z-index:50;background:var(--ui-bg);color:var(--ui-fg);border-radius:12px;box-shadow:var(--shadow);border:1px solid var(--ui-border);padding:12px;min-width:max-content}.pop-bottom{top:calc(100% + 8px);right:0}.pop-right{left:calc(100% + 10px);top:-6px}.context-bar .pop-bottom{left:0;right:auto}.link-form{display:flex;flex-direction:column;gap:8px;width:340px}.link-form label{font-size:12px;font-weight:600;color:var(--ui-muted)}.link-form input{flex:1;min-width:0;height:34px;border:1px solid var(--ui-border);border-radius:8px;padding:0 10px;background:transparent;outline:none}.link-form input:focus{border-color:var(--accent)}.bg-options{display:flex;flex-direction:column;gap:2px}.bg-option{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:6px 10px 6px 6px;border-radius:8px;cursor:pointer}.bg-option:hover{background:var(--ui-hover)}.bg-option.active{background:var(--ui-active)}.bg-option span{width:22px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.15)}.empty-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;color:var(--ui-muted);max-width:420px;padding:0 20px}.empty-hint h3{margin:0 0 6px;color:var(--ui-fg);font-weight:600}.empty-hint p{margin:0;line-height:1.5}.toast,.conn-banner{position:absolute;left:50%;transform:translate(-50%);background:#1b1b1f;color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;box-shadow:var(--shadow);max-width:min(560px,90vw)}.toast{bottom:20px}.conn-banner{top:64px;background:#f5a524;color:#1b1b1f}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;display:grid;place-items:center;z-index:100}.modal{background:var(--ui-bg);color:var(--ui-fg);border-radius:16px;padding:20px 22px;width:min(520px,92vw);max-height:86vh;overflow:auto;box-shadow:var(--shadow)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.modal-head h3{margin:0}.shortcuts{width:100%;border-collapse:collapse;font-size:14px}.shortcuts td{padding:6px 0;border-bottom:1px solid var(--ui-border)}.shortcuts td:first-child{width:42%}kbd{font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px;background:var(--ui-hover);padding:2px 6px;border-radius:5px}.center-msg{height:100%;display:grid;place-content:center;text-align:center;gap:8px}.center-msg.slow-only{opacity:0;animation:slow-appear .12s linear .4s forwards}@keyframes slow-appear{to{opacity:1}}.signin{max-width:26rem;margin:18vh auto;text-align:center;display:flex;flex-direction:column;gap:1rem;align-items:center}.signin p{color:var(--ui-muted);margin:0}.home{height:100%;overflow:auto;padding:28px clamp(16px,4vw,56px) 64px;background:#f6f6f4}.home-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:700;letter-spacing:-.02em}.whoami{display:inline-flex;align-items:center;gap:.5rem;font-size:13px;color:var(--ui-muted)}.whoami img{border-radius:50%;display:block}.error{color:var(--danger)}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px}.board-card{position:relative;background:#fff;border-radius:14px;box-shadow:var(--shadow);overflow:visible;display:flex;flex-direction:column;border:1px solid var(--ui-border)}.board-card .thumb{display:block;aspect-ratio:16 / 10;border-radius:14px 14px 0 0;overflow:hidden;position:relative}.board-card .meta{padding:12px 44px 14px 14px;display:flex;flex-direction:column;gap:2px}.board-card .title{font-weight:600;color:inherit;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-card .sub{font-size:12px;color:var(--ui-muted)}.board-card .card-menu{position:absolute;right:6px;bottom:12px}.board-card .card-menu .popover{right:0;top:auto;bottom:calc(100% + 6px)}.board-card.new{border:2px dashed rgba(0,0,0,.14);background:transparent;box-shadow:none;cursor:pointer;align-items:center;justify-content:center;gap:10px;min-height:220px;font-weight:600;color:var(--ui-muted)}.board-card.new:hover,.board-card.new.active{border-color:var(--accent);color:var(--accent)}.board-grid .new-document{display:grid}.board-grid .new-document>.board-card.new{width:100%;height:100%;font:inherit}.board-grid .new-document>.popover{left:0;right:auto}.board-card .type-badge{display:inline-block;margin-right:6px;padding:1px 6px;border-radius:999px;background:var(--ui-hover);color:var(--ui-muted);font-size:11px;font-weight:600}.board-card.new .plus{width:52px;height:52px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:var(--shadow)}.empty-thumb{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:13px;color:#999}.collage{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;gap:3px;padding:3px}.collage img{width:100%;height:100%;object-fit:cover;border-radius:4px;min-height:0}.collage.n2{grid-template-columns:1fr 1fr}.collage.n3{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr}.collage.n3 img:first-child{grid-row:span 2}.collage.n4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.menu{display:flex;flex-direction:column;min-width:140px;margin:-6px}.menu button{text-align:left;border:0;background:transparent;padding:8px 12px;border-radius:7px;cursor:pointer}.menu button:hover{background:var(--ui-hover)}.menu button.danger{color:var(--danger)}.people{max-width:44rem;margin:0 auto;padding:28px clamp(16px,4vw,56px) 64px}.people h1{font-size:22px;margin:0 0 20px}.people-add{display:flex;gap:8px;margin-bottom:16px}.people-add input{flex:1;height:36px;padding:0 10px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);font-size:14px}.people-add select{height:36px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);padding:0 6px}.people-error{color:var(--danger);margin:0 0 16px}.people-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.people-list li{display:flex;align-items:center;gap:10px;padding:10px 8px;border-bottom:1px solid var(--ui-border)}.people-list img{border-radius:50%;display:block;flex-shrink:0}.people-name{font-weight:600}.people-email{color:var(--ui-muted);font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.people-role,.people-status{font-size:12px;color:var(--ui-muted);flex-shrink:0;width:4.5rem}.people-list .btn{flex-shrink:0}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px}.project-card{color:inherit;text-decoration:none;min-height:110px;justify-content:center}.project-card .meta{padding:16px;gap:4px}.project-card .title{font-weight:600;font-size:15px}.project-meta{font-size:12px;color:var(--ui-muted)}.project-head{display:flex;align-items:center;gap:12px;margin:4px 0 20px}.project-head h1{font-size:22px;margin:0}.empty-state{margin-top:4px}.tab-strip{display:flex;gap:4px;margin:0 0 20px;border-bottom:1px solid var(--ui-border)}.tab-strip .tab{margin-bottom:-1px}.tab{display:inline-block;padding:8px 4px;margin-right:20px;font-size:14px;font-weight:600;color:var(--ui-muted);text-decoration:none;border-bottom:2px solid transparent}.tab:hover{color:var(--ui-fg)}.tab.active{color:var(--ui-fg);border-bottom-color:var(--accent)}.library-type-tabs{display:flex;gap:4px;margin:0 0 16px}.library-type-tabs .tab{margin-right:14px;font-weight:500}.placeholder-badge{margin-left:6px;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;background:var(--ui-active);color:var(--accent)}.library-outstanding{margin:-4px 0 14px;font-size:13px;color:var(--ui-muted)}.placeholder-note{display:inline-flex;align-items:center;gap:8px;flex:none}.placeholder-note .placeholder-badge{margin-left:0}.placeholder-note .btn{cursor:pointer}.used-in-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.used-in-list li{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.used-in-title{color:var(--ui-fg);font-weight:600;font-size:14px;text-decoration:none}.used-in-title:hover{text-decoration:underline}.used-in-shots{color:var(--ui-muted);font-size:13px;font-variant-numeric:tabular-nums}.library-item{max-width:60rem;margin:0 auto}.library-item-head{display:flex;align-items:baseline;gap:12px;margin:4px 0 24px}.library-item-type{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ui-muted)}.library-item-name{flex:1;min-width:0;font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--ui-fg);background:transparent;border:1px solid transparent;border-radius:8px;padding:4px 8px;margin-left:-8px}.library-item-name:hover{border-color:var(--ui-border)}.library-item-name:focus{border-color:var(--accent);outline:none;background:var(--ui-bg)}.library-section{margin-bottom:36px}.library-section h2{font-size:16px;margin:0 0 12px}.library-section-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}.library-section-head h2{margin:0}.library-section-head .btn{cursor:pointer}.rating-fields{display:flex;flex-direction:column;gap:8px;max-width:26rem}.rating-field{display:flex;align-items:center;gap:10px;min-width:0}.rating-field>span{flex:none;width:7rem;font-size:13px;color:var(--ui-muted)}.rating-field>select{flex:1;min-width:0;height:30px;font-size:13px;padding:0 6px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg)}.rating-field>select:focus{border-color:var(--accent);outline:none}.rating-field>select:disabled{opacity:.5}.exploration-drop{border:2px dashed transparent;border-radius:14px;padding:8px;margin-left:-10px;margin-right:-10px}.exploration-drop.drag-over{border-color:var(--accent);background:var(--ui-hover)}.exploration-list{display:flex;flex-direction:column;gap:16px}.exploration{background:#fff;border:1px solid var(--ui-border);border-radius:14px;padding:12px;box-shadow:var(--shadow)}.exploration.is-cover{border-color:var(--accent)}.exploration-versions{list-style:none;margin:0 0 10px;padding:0;display:flex;gap:10px;flex-wrap:wrap}.exploration-version{position:relative;width:260px;max-width:100%;border-radius:10px;overflow:hidden;background:var(--ui-hover)}.exploration-versions.open .exploration-version{width:140px}.exploration-version img,.exploration-version video{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover}.exploration-version.empty{display:grid;place-items:center;min-height:80px;padding:12px;font-size:13px;color:var(--ui-muted)}.exploration-n{position:absolute;left:6px;top:6px;font-size:11px;font-weight:600;color:#fff;background:#0000008c;border-radius:5px;padding:1px 5px}.exploration-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.exploration-bar .spacer{flex:1}.exploration-count{font-size:12px;color:var(--ui-muted)}.field-list{display:flex;flex-direction:column;gap:8px;align-items:flex-start;max-width:40rem}.detail-row{display:flex;align-items:center;gap:8px;width:100%}.detail-row input{height:34px;padding:0 10px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);font-size:14px;min-width:0}.detail-row .detail-label{width:11rem;font-weight:600}.detail-row .detail-value{flex:1}.storyboard{max-width:76rem;margin:0 auto}.storyboard-head{display:flex;align-items:center;gap:12px;margin:0 0 24px;flex-wrap:wrap}.storyboard-title{flex:1;min-width:0;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0}.storyboard-count{font-size:12px;color:var(--ui-muted);font-variant-numeric:tabular-nums}.lock-numbers{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ui-fg);cursor:pointer}.sequence-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:20px}.sequence-chip{display:flex;align-items:center;gap:6px;padding:4px 6px 4px 8px;border:1px solid var(--ui-border);border-radius:10px;background:#fff}.sequence-n{padding:2px 6px;border-radius:6px;background:var(--ui-hover);color:var(--ui-muted);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;flex:none}.sequence-name{min-width:4rem;font-size:14px;font-weight:700;color:var(--ui-fg);background:transparent;border:1px solid transparent;border-radius:8px;padding:4px 8px;margin-left:-4px}.sequence-name:hover{border-color:var(--ui-border)}.sequence-name:focus{border-color:var(--accent);outline:none;background:var(--ui-bg)}.sequence-count{font-size:12px;color:var(--ui-muted);font-variant-numeric:tabular-nums}.shot-grid-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.btn.small{height:24px;padding:0 8px;font-size:11px}.shot-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}.shot-card{background:#fff;border:1px solid var(--ui-border);border-radius:12px;box-shadow:var(--shadow);padding:8px;display:flex;flex-direction:column;gap:8px;min-width:0}.shot-board{position:relative;aspect-ratio:16 / 9;border-radius:8px;overflow:hidden;background:var(--ui-hover)}button.shot-board{display:block;width:100%;padding:0;border:0;cursor:pointer;font:inherit;color:inherit}button.shot-board:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shot-card{cursor:pointer}.shot-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent),var(--shadow)}.shot-card .shot-board-empty{border-style:dashed;cursor:pointer}.shot-board img,.shot-board video{display:block;width:100%;height:100%;object-fit:cover}.shot-board-empty{width:100%;height:100%;display:grid;place-items:center;font-size:12px;color:var(--ui-muted);border:2px dashed rgba(0,0,0,.12);border-radius:8px;text-align:center;padding:6px;cursor:pointer}.shot-board-empty:hover{border-color:var(--accent);color:var(--ui-fg)}.shot-board-empty.disabled,.shot-replace.disabled,.btn.disabled{opacity:.35;cursor:default;pointer-events:none}.shot-replace{position:absolute;right:6px;bottom:6px;font-size:11px;padding:3px 8px;height:auto;opacity:0;transition:opacity .12s ease}.shot-board:hover .shot-replace,.shot-replace:focus-within{opacity:1}.shot-grid-drop{border:2px dashed transparent;border-radius:14px;padding:8px;margin:-8px -8px 16px}.shot-grid-drop.drag-over{border-color:var(--accent);background:var(--ui-hover)}.shot-card.drag-over{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.grip{display:grid;place-items:center;width:18px;height:24px;flex:none;border-radius:6px;color:var(--ui-muted);cursor:grab}.grip:hover{background:var(--ui-hover);color:var(--ui-fg)}.grip:focus-visible{outline:2px solid var(--accent);outline-offset:1px;color:var(--ui-fg)}.sequence-grip{margin-left:-4px}.shot-card.lifted,.sequence-chip.lifted{opacity:.4}.shot-card.insert-before{box-shadow:inset 3px 0 0 var(--accent),var(--shadow)}.shot-card.insert-after{box-shadow:inset -3px 0 0 var(--accent),var(--shadow)}.sequence-chip.insert-before{box-shadow:inset 3px 0 0 var(--accent)}.sequence-chip.insert-after{box-shadow:inset -3px 0 0 var(--accent)}.notice{color:var(--ui-fg)}.shot-bar{display:flex;align-items:center;gap:6px}.shot-number{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em}.shot-number.shot-number-none{font-weight:500;font-size:12px;color:var(--ui-muted);letter-spacing:0}.shot-duration-field{display:inline-flex;align-items:center;gap:2px;margin-left:auto;border:1px solid var(--ui-border);border-radius:7px;padding:0 6px;height:28px}.shot-duration-field:focus-within{border-color:var(--accent)}.shot-duration{width:4ch;border:0;background:transparent;outline:none;text-align:right;padding:0;font-size:13px;font-variant-numeric:tabular-nums;color:var(--ui-fg);-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.shot-duration::-webkit-outer-spin-button,.shot-duration::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.shot-unit{font-size:11px;color:var(--ui-muted)}.field-error{color:var(--danger);font-size:11px;line-height:1.3;margin:-4px 0 0}.shot-notes{width:100%;resize:vertical;min-height:3.6em;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);font:inherit;font-size:13px;line-height:1.35;padding:6px 8px}.shot-notes:focus{border-color:var(--accent);outline:none}.shot-card:focus-within{position:relative;z-index:5}.shot-features{display:flex;flex-direction:column;gap:6px}.feature-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}.feature-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 4px 2px 7px;border-radius:999px;background:var(--ui-hover);font-size:11px}.feature-chip .feature-name{color:var(--ui-fg);text-decoration:none;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feature-chip .feature-name:hover{text-decoration:underline}.feature-type{color:var(--ui-muted);font-size:10px;text-transform:lowercase;flex:none}.feature-chip.placeholder .feature-name{border-bottom:1px dashed var(--accent)}.feature-remove{display:grid;place-items:center;width:15px;height:15px;flex:none;padding:0;border:0;border-radius:999px;background:transparent;color:var(--ui-muted);cursor:pointer}.feature-remove:hover{background:var(--ui-bg);color:var(--danger)}.feature-picker{position:relative}.feature-input{width:100%;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ui-fg);font:inherit;font-size:12px;padding:4px 8px}.feature-input:hover{border-color:var(--ui-border)}.feature-input:focus{border-color:var(--accent);background:var(--ui-bg);outline:none}.feature-list,.feature-none{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:20;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:10px;box-shadow:var(--shadow);min-width:240px}.feature-list{list-style:none;margin:0;padding:4px;max-height:220px;overflow-y:auto}.feature-none{margin:0;padding:7px 10px;font-size:11px;color:var(--ui-muted)}.feature-option{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;font-size:12px;cursor:pointer}.feature-option.active{background:var(--ui-active)}.feature-option-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feature-option.create{color:var(--ui-muted)}.feature-option.create .feature-option-name{color:var(--ui-fg)}.no-access{max-width:26rem;margin:18vh auto;text-align:center;display:flex;flex-direction:column;gap:1rem;align-items:center}.no-access p{color:var(--ui-muted);margin:0}.pricing{max-width:68rem;margin:0 auto;padding:28px clamp(16px,4vw,56px) 64px}.pricing h1{font-size:22px;margin:16px 0 20px}.pricing h2{font-size:15px;margin:0 0 10px}.pricing h3{font-size:13px;margin:16px 0 8px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em}.pricing-error{color:var(--danger);margin:0 0 16px}.pricing-pane{display:flex;flex-direction:column;gap:14px;align-items:flex-start}.pricing-rows{display:flex;flex-direction:column;gap:6px;width:100%;min-width:0}.pricing-pane>.pricing-rows,.pricing-pane>.pricing-add{max-width:42rem}.pricing-row{display:flex;align-items:center;gap:8px;min-width:0}.pricing-row-label{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis}.pricing input[type=number]{width:7rem;flex:none}.pricing-col .pricing-row>input:first-child{flex:3;width:auto;min-width:4rem}.pricing-col .pricing-row>select{flex:3;min-width:0}.pricing-col .pricing-override{flex:2;width:auto;min-width:3.5rem}.pricing input,.pricing select,.pricing textarea{height:34px;padding:0 8px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);font:inherit;font-size:13px}.pricing textarea{height:auto;padding:8px;line-height:1.45;width:100%;resize:vertical}.pricing-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pricing-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:28px;width:100%}.pricing-col{min-width:0}.pricing-presets{display:grid;grid-template-columns:minmax(200px,16rem) minmax(0,1fr);gap:28px;width:100%}.pricing-preset-list{display:flex;flex-direction:column;gap:4px;min-width:0}.pricing-preset{display:flex;align-items:baseline;gap:8px;text-align:left;padding:8px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ui-fg);font:inherit;font-size:13px;cursor:pointer}.pricing-preset:hover{background:var(--ui-hover)}.pricing-preset.active{background:var(--ui-active);border-color:var(--ui-border)}.pricing-preset-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pricing-preset-side{font-size:11px;color:var(--ui-muted)}.pricing-preset-editor{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:10px}.pricing-preset-head{display:flex;align-items:center;gap:8px;width:100%}.pricing-preset-title{flex:1;font-weight:600}.pricing-preset-body{display:grid;grid-template-columns:minmax(0,20rem) minmax(0,1fr);gap:24px;width:100%}.pricing-days{min-width:0;max-height:22rem;overflow-x:auto;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.pricing-assumptions{min-width:0;display:flex;flex-direction:column}.pricing-types{display:flex;flex-wrap:wrap;gap:4px 14px}.pricing-types label{display:flex;align-items:center;gap:5px;font-size:13px}.pricing-types input{height:auto}@media(max-width:760px){.pricing-presets,.pricing-preset-body{grid-template-columns:minmax(0,1fr)}}.bid{max-width:76rem;margin:0 auto}.bid-head{display:flex;align-items:center;gap:12px;margin:0 0 20px;flex-wrap:wrap}.bid-title{flex:1;min-width:0;font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0}.bid h2{font-size:15px;margin:0 0 10px}.bid-section{margin-bottom:28px;min-width:0}.bid input,.bid select,.bid textarea{height:32px;padding:0 8px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);font:inherit;font-size:13px;min-width:0}.bid textarea{height:auto;padding:8px;line-height:1.45;width:100%;resize:vertical}.bid-figure{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.bid-settings{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:28px;padding:12px;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-bg)}.bid-setting{display:flex;flex-direction:column;gap:4px;min-width:0}.bid-setting-label{font-size:11px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em}.bid-setting input,.bid-setting select{width:8rem}.bid-settings-hint{flex:1 1 16rem;margin:0;min-width:12rem}.bid-lines{overflow-x:auto;margin-bottom:10px}.bid-line{border-bottom:1px solid var(--ui-border);min-width:44rem}.bid-line-row,.bid-leadership-row{display:grid;align-items:center;gap:8px;padding:4px 0}.bid-line-row{grid-template-columns:26px minmax(6rem,1fr) 4.5rem 9rem 5rem 7rem 30px;min-width:44rem}.bid-leadership-row{grid-template-columns:minmax(6rem,1fr) 8rem 5rem 7rem 30px;min-width:32rem}.bid-line-headings{font-size:11px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--ui-border)}.bid-line-preset-name{font-size:12px;color:var(--ui-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bid-line-toggle svg{transition:transform .12s ease;transform:rotate(-90deg)}.bid-line.open .bid-line-toggle svg{transform:none}.bid-line.omitted .bid-line-row,.bid-cost-row.omitted{text-decoration:line-through;color:var(--ui-muted)}.bid-line.omitted .bid-line-row input,.bid-cost-row.omitted input{text-decoration:line-through}.bid-line-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:12px;padding:12px 0 16px 26px;min-width:0}.bid-field{display:flex;flex-direction:column;gap:4px;min-width:0}.bid-field-label{font-size:11px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em}.bid-field-wide{grid-column:1 / -1}.bid-days{display:flex;flex-direction:column;gap:6px;max-width:34rem;overflow-x:auto}.bid-day{display:grid;grid-template-columns:minmax(6rem,1fr) 5rem 6rem 5.5rem;gap:8px;align-items:center}.bid-day-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bid-day-rate{font-size:12px;color:var(--ui-muted)}.bid-day.retired .bid-day-name{color:var(--ui-muted);font-style:italic}.bid-cost-row{display:grid;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--ui-border);grid-template-columns:7.5rem minmax(10rem,1fr) 4rem 4rem 6rem 5rem 4.5rem 4rem 6rem 5.5rem 6rem 30px;min-width:70rem}.bid-cost-row>input,.bid-cost-row>select{width:100%}.bid-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.bid-add input,.bid-add select{width:10rem}.bid-totals{max-width:32rem}.bid-total-rows{display:flex;flex-direction:column;gap:4px}.bid-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px}.bid-total-row.strong{font-size:15px;font-weight:700;border-top:1px solid var(--ui-border);padding-top:6px;margin-top:4px}.bid-total-label{min-width:0}.bid-total-note{color:var(--ui-muted);font-size:11px}.people-panel{margin-top:36px;max-width:36rem}.people-panel h2{font-size:16px;margin:0 0 12px}.add-person-row{display:flex;gap:8px;margin-top:10px}.add-person-row select{flex:1;height:36px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-bg);color:var(--ui-fg);padding:0 6px}.danger-zone{margin-top:40px;max-width:36rem;padding:16px;border:1px solid var(--danger);border-radius:12px}.danger-zone h2{font-size:16px;margin:0 0 6px;color:var(--danger)}.danger-zone p{color:var(--ui-muted);margin:0 0 12px}@media(max-width:640px){.share{width:34px;padding:0;font-size:0}.toolbar{top:auto;bottom:12px;transform:none;flex-direction:row;left:12px}.toolbar .divider{width:1px;height:auto;margin:6px 2px}.zoom{bottom:72px}.pop-right{left:0;top:auto;bottom:calc(100% + 10px)}}.crop-layer{position:absolute;left:0;top:0;z-index:1000000}.crop-full,.crop-frame{position:absolute;left:0;top:0;cursor:move}.crop-full img{display:block;opacity:.35;pointer-events:none;-webkit-user-drag:none}.crop-full:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;outline:calc(var(--inv) * 1px) dashed rgba(127,127,127,.7)}.crop-frame{outline:calc(var(--inv) * 2px) solid #fff;box-shadow:0 0 0 calc(var(--inv) * 3px) #00000040}.crop-clip{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.crop-clip img{display:block;pointer-events:none;-webkit-user-drag:none}.crop-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(to right,transparent calc(33.33% - var(--inv) * .5px),rgba(255,255,255,.55) 0,rgba(255,255,255,.55) calc(33.33% + var(--inv) * .5px),transparent 0,transparent calc(66.66% - var(--inv) * .5px),rgba(255,255,255,.55) 0,rgba(255,255,255,.55) calc(66.66% + var(--inv) * .5px),transparent 0),linear-gradient(to bottom,transparent calc(33.33% - var(--inv) * .5px),rgba(255,255,255,.55) 0,rgba(255,255,255,.55) calc(33.33% + var(--inv) * .5px),transparent 0,transparent calc(66.66% - var(--inv) * .5px),rgba(255,255,255,.55) 0,rgba(255,255,255,.55) calc(66.66% + var(--inv) * .5px),transparent 0)}.crop-handle{position:absolute;background:#fff;box-shadow:0 0 0 calc(var(--inv) * 1px) #00000059;pointer-events:auto}.ch-nw,.ch-ne,.ch-se,.ch-sw{width:calc(var(--inv) * 14px);height:calc(var(--inv) * 14px)}.ch-nw{left:calc(var(--inv) * -5px);top:calc(var(--inv) * -5px);cursor:nwse-resize}.ch-se{right:calc(var(--inv) * -5px);bottom:calc(var(--inv) * -5px);cursor:nwse-resize}.ch-ne{right:calc(var(--inv) * -5px);top:calc(var(--inv) * -5px);cursor:nesw-resize}.ch-sw{left:calc(var(--inv) * -5px);bottom:calc(var(--inv) * -5px);cursor:nesw-resize}.ch-n,.ch-s{left:50%;width:calc(var(--inv) * 26px);height:calc(var(--inv) * 6px);transform:translate(-50%);cursor:ns-resize}.ch-n{top:calc(var(--inv) * -3px)}.ch-s{bottom:calc(var(--inv) * -3px)}.ch-e,.ch-w{top:50%;height:calc(var(--inv) * 26px);width:calc(var(--inv) * 6px);transform:translateY(-50%);cursor:ew-resize}.ch-e{right:calc(var(--inv) * -3px)}.ch-w{left:calc(var(--inv) * -3px)}.crop-bar .ratio{padding:0 9px;font-size:13px;font-variant-numeric:tabular-nums}.home .collage img,.board-card img{object-fit:cover}.frame-body{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:2px;box-shadow:0 0 0 calc(var(--inv) * 1px) #00000014,0 1px 3px #0000000d}.frame-body.clear{box-shadow:none;outline:calc(var(--inv) * 1.5px) dashed rgba(120,120,130,.55)}.dark-canvas .frame-body{box-shadow:0 0 0 calc(var(--inv) * 1px) #ffffff14}.frame-title{position:absolute;left:0;top:0;transform-origin:0 0;transform:scale(var(--inv)) translateY(calc(-100% - 6px));font-size:14px;font-weight:500;line-height:1.2;color:#52525b;padding:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:move}.frame-title:hover{color:var(--accent)}.dark-canvas .frame-title{color:#b4b4bd}.item-frame.editing .frame-title{overflow:visible}.frame-title-input{font:inherit;border:1.5px solid var(--accent);border-radius:5px;padding:1px 5px;margin:-3px -7px;background:#fff;color:#1b1b1f;outline:none;cursor:text}.frame-draft{position:absolute;left:0;top:0;pointer-events:none;z-index:1000001;background:#fff9;outline:calc(var(--inv) * 1.5px) solid var(--accent)}.frames-list{display:flex;flex-direction:column;min-width:220px;max-width:300px;max-height:60vh;overflow:auto;margin:-4px}.frames-list label{font-size:12px;font-weight:600;color:var(--ui-muted);padding:4px 8px 6px}.frames-list button{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:7px 8px;border-radius:7px;cursor:pointer;text-align:left}.frames-list button:hover{background:var(--ui-hover)}.frames-list .num{width:18px;font-size:12px;color:var(--ui-muted);font-variant-numeric:tabular-nums}.frames-list .chip{width:14px;height:10px;border-radius:2px;box-shadow:inset 0 0 0 1px #0003;flex:none}.frames-list .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frames-list.empty{padding:6px;max-width:260px}.frames-list.empty p{margin-top:4px}.btn.with-count{padding:0 8px 0 7px;gap:4px}.btn .count{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.frame-shared{display:inline-flex;vertical-align:-1px;margin-right:5px;color:var(--accent)}.btn.share-frame{padding:0 10px;font-size:13px;font-weight:500}.btn.share-frame.is-shared{color:var(--accent)}.share-modal{width:min(520px,94vw)}.share-modal h3{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-sub{margin:-4px 0 14px;font-size:13px;color:var(--ui-muted)}.share-copy{margin:0 0 16px;line-height:1.5;font-size:14px}.field-label{display:block;font-size:12px;font-weight:600;color:var(--ui-muted);margin:14px 0 6px}.pw-row,.link-row{display:flex;gap:6px}.pw-input{flex:1;display:flex;align-items:center;border:1px solid var(--ui-border);border-radius:8px;padding-right:4px}.pw-input:focus-within,.link-row input:focus{border-color:var(--accent)}.pw-input input,.link-row input{flex:1;min-width:0;height:36px;border:0;background:transparent;padding:0 10px;outline:none;font-size:14px}.link-row input{border:1px solid var(--ui-border);border-radius:8px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:12.5px}.pw-row>.btn,.link-row>.btn{border:1px solid var(--ui-border);height:38px}.btn.ghost-sm{height:28px;padding:0 8px;font-size:12px;color:var(--ui-muted)}.btn.sm{height:30px;font-size:13px}.btn.danger{color:var(--danger)}.btn.danger:hover{background:#e5484d1a}.btn.danger-solid{background:var(--danger);color:#fff;font-weight:600}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions.spread{justify-content:space-between}.confirm{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;width:100%}.confirm span{flex:1;min-width:180px}.form-error{color:var(--danger);font-size:13px;margin:8px 0 0}.callout{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--ui-active);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:14px}.callout code,.warn code{font-family:JetBrains Mono,ui-monospace,monospace;font-size:13px}.hint-inline{color:var(--ui-muted);font-size:12px}.warn{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#fff4e0;color:#7a4b00;font-size:13px;line-height:1.45}.theme-dark .warn{background:#f5a52426;color:#f5c46b}html.gallery-page body{overflow:auto;background:#fbfaf7}.gallery-shell{min-height:100%;background:#fbfaf7;color:#1b1b1f;padding:clamp(28px,6vw,72px) clamp(16px,5vw,64px) 80px}.gallery-shell.center{display:grid;place-items:center}.img-clip{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;display:block}.img-clip img{display:block}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:#fbfaf7;color:#1b1b1f}.viewer-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px clamp(16px,3vw,28px);border-bottom:1px solid #e8e6df;background:#fbfaf7;position:relative;z-index:2}.viewer-head h1{flex:1 1 auto;min-width:0;margin:0;font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:clamp(24px,3vw,32px);line-height:1.1;letter-spacing:-.01em;overflow-wrap:anywhere}.viewer-meta{display:flex;align-items:center;gap:14px;margin-left:auto;color:#74747c;font-size:14px}.viewer-btn{height:36px;padding:0 16px;border:0;border-radius:9px;background:#1b1b1f;color:#fff;font-weight:600;font-size:14px;cursor:pointer}.viewer-btn:disabled{opacity:.4;cursor:default}.viewer-canvas{position:relative;flex:1;overflow:hidden;touch-action:none;overscroll-behavior:none;user-select:none;-webkit-user-select:none;cursor:default}body.is-panning .viewer-canvas{cursor:grabbing}.viewer-canvas .item-image{cursor:pointer}.viewer-clip{position:absolute;left:0;top:0;overflow:hidden;isolation:isolate}.viewer-sel{position:absolute;left:0;top:0;pointer-events:none;outline:calc(var(--inv) * 2px) solid var(--accent);outline-offset:calc(var(--inv) * -2px)}.viewer .toast{position:fixed}.gate{width:min(380px,100%);text-align:center;display:flex;flex-direction:column;gap:12px;align-items:stretch}.gate h1{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:36px;margin:4px 0 0}.gate p{margin:0 0 6px;color:#74747c;line-height:1.5}.gate-icon{width:48px;height:48px;border-radius:50%;background:#efeee9;display:grid;place-items:center;margin:0 auto;color:#44444c}.gate input{height:46px;border:1px solid #dcdad3;border-radius:10px;padding:0 14px;font-size:16px;background:#fff;outline:none;text-align:center}.gate input:focus{border-color:#1b1b1f}.gbtn{height:46px;border:0;border-radius:10px;background:#1b1b1f;color:#fff;font-weight:600;font-size:15px;cursor:pointer}.gbtn:disabled{opacity:.45;cursor:default}.spinner{width:28px;height:28px;border:3px solid #ddd;border-top-color:#1b1b1f;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c0c0ef0;display:grid;place-items:center;z-index:100}.lb-frame{position:relative}.lb-nav,.lb-close{position:fixed;border:0;background:#ffffff1a;color:#fff;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;cursor:pointer}.lb-nav:hover,.lb-close:hover{background:#fff3}.lb-nav{top:50%;margin-top:-23px}.lb-nav.prev{left:18px}.lb-nav.next{right:18px;transform:scaleX(-1)}.lb-close{top:18px;right:18px}.lb-count{position:fixed;bottom:18px;left:50%;transform:translate(-50%);color:#ffffffb3;font-size:13px;font-variant-numeric:tabular-nums}body.lightbox-open{overflow:hidden!important}.img-mirror{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;transform:scaleX(-1)}.rotate-handle{position:absolute;left:50%;top:100%;width:calc(var(--inv) * 22px);height:calc(var(--inv) * 22px);margin-left:calc(var(--inv) * -11px);margin-top:calc(var(--inv) * 14px);border-radius:50%;background:#fff;border:calc(var(--inv) * 1.5px) solid var(--accent);color:var(--accent);display:grid;place-items:center;pointer-events:auto;cursor:grab;box-shadow:0 calc(var(--inv) * 1px) calc(var(--inv) * 4px) #00000026}.rotate-handle svg{width:calc(var(--inv) * 13px);height:calc(var(--inv) * 13px)}.rotate-handle:before{content:"";position:absolute;left:50%;bottom:100%;width:calc(var(--inv) * 1.5px);height:calc(var(--inv) * 14px);margin-left:calc(var(--inv) * -.75px);background:var(--accent)}body.is-rotating,body.is-rotating *{cursor:grabbing!important}.angle-tip{position:absolute;pointer-events:none;background:#1b1b1f;color:#fff;font-size:12px;font-weight:600;padding:3px 7px;border-radius:6px;font-variant-numeric:tabular-nums;transform:translate(14px,14px);z-index:20}.img-turn{position:absolute;left:50%;top:50%;overflow:hidden}.style-trigger{display:inline-flex;align-items:center;gap:0}.style-trigger svg:last-child{margin-left:-1px;opacity:.6}.text-style-pop>.btn{width:40px}.popover .style-menu{display:flex;gap:2px;margin:-6px}.item-shape .shape-body{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:10px 12px;overflow:visible}.item-shape .shape-body.ghost{outline:calc(var(--inv) * 1px) dashed rgba(120,120,130,.5)}.shape-text{width:100%;white-space:pre-wrap;overflow-wrap:break-word;line-height:1.3;outline:none;min-height:1.3em}.shape-text.editor{cursor:text;user-select:text;-webkit-user-select:text}.shape-text.editor:empty:before{content:"Add text";opacity:.35}.shape-draft{position:absolute;left:0;top:0;pointer-events:none;z-index:1000001;opacity:.85}.num-field{display:inline-flex;align-items:center;height:30px;border:1px solid var(--ui-border);border-radius:7px;padding:0 6px;gap:2px;font-size:13px}.num-field:focus-within{border-color:var(--accent)}.num-field input{width:3ch;border:0;background:transparent;outline:none;text-align:center;font-variant-numeric:tabular-nums;font-size:13px;padding:0}.num-field span{color:var(--ui-muted);font-size:11px}.stroke-chip{width:18px;height:18px;border:3px solid;border-radius:2px;display:inline-block}.swatches.six{grid-template-columns:repeat(6,28px)}.swatch.current{box-shadow:0 0 0 2px var(--ui-bg),0 0 0 4px var(--accent)}.stroke-pop{display:flex;flex-direction:column;gap:8px;min-width:250px}.stroke-pop label{font-size:12px;font-weight:600;color:var(--ui-muted)}.stroke-widths{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.btn.sw{width:36px;height:30px;padding:0 6px;border:1px solid var(--ui-border)}.btn.sw .line{display:block;width:100%;background:currentColor;border-radius:1px}.btn.sw .none{font-size:11px}.btn.sw:first-child{width:44px}.stroke-widths .num-field{margin-left:4px}.handle-n,.handle-s{left:50%;width:calc(var(--inv) * 22px);height:calc(var(--inv) * 8px);border-radius:calc(var(--inv) * 4px);cursor:ns-resize}.handle-n{top:0}.handle-s{top:100%}.storyboard-title .title-button{font:inherit;letter-spacing:inherit;color:inherit;background:none;border:0;padding:2px 6px;margin:0 -6px;border-radius:6px;cursor:text;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.storyboard-title .title-button:hover{background:var(--ui-hover)}input.storyboard-title.title-input{padding:1px 5px;margin-left:-6px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-bg);color:var(--ui-fg)}.storyboard.with-panel-open{max-width:98rem}.storyboard-body{display:flex;align-items:flex-start;gap:20px}.storyboard-main{flex:1;min-width:0;min-height:60vh}.shot-panel{flex:none;width:320px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:12px;box-shadow:var(--shadow);padding:12px;display:flex;flex-direction:column;gap:12px}.shot-panel.collapsed{width:auto;padding:8px;align-items:center;gap:8px;writing-mode:horizontal-tb}.shot-panel-head{display:flex;align-items:center;gap:6px}.shot-panel-spacer{flex:1}.shot-panel-board{position:relative;aspect-ratio:16 / 9;border-radius:8px;overflow:hidden;background:var(--ui-hover)}.shot-panel-board.drag-over{box-shadow:0 0 0 2px var(--accent)}.shot-panel-board img,.shot-panel-board video{display:block;width:100%;height:100%;object-fit:contain}.shot-panel-board .shot-replace{opacity:1;background:var(--ui-bg);box-shadow:var(--shadow)}.shot-field{display:flex;align-items:center;gap:8px;min-width:0}.shot-field-block{flex-direction:column;align-items:stretch;gap:4px}.shot-field-label{font-size:11px;color:var(--ui-muted);flex:none;width:70px}.shot-field-block .shot-field-label{width:auto}.shot-select{flex:1;min-width:0;height:28px;font-size:13px;padding:0 4px;border:1px solid var(--ui-border);border-radius:7px;background:var(--ui-bg);color:var(--ui-fg)}.shot-select:focus{border-color:var(--accent);outline:none}.shot-select:disabled{opacity:.5}.shot-panel .shot-duration-field{margin-left:0}.shot-panel .shot-duration{width:8ch;text-align:left}.shot-panel .field-error{margin:-6px 0 0}.shot-panel-delete{align-self:flex-start;gap:6px}@media(max-width:900px){.storyboard-body{flex-direction:column;align-items:stretch}.shot-panel{width:auto;position:static;max-height:none}}
