@layer tokens,base,ui;@layer tokens{:root{--font-sans: "Space Grotesk Variable", "Space Grotesk", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, "SF Mono", "Menlo", monospace;--radius: 10px;--radius-sm: 7px;--radius-lg: 14px;--shadow: 0 1px 2px oklch(0 0 0 / .3), 0 12px 32px oklch(0 0 0 / .35);--bg: oklch(.155 .006 60);--bg-elev: oklch(.185 .007 60);--surface: oklch(.205 .008 60);--surface-2: oklch(.165 .006 55);--border: oklch(.3 .01 60);--border-strong: oklch(.4 .012 58);--text: oklch(.93 .008 78);--muted: oklch(.66 .012 72);--faint: oklch(.5 .01 66);--accent: oklch(.75 .155 58);--accent-press: oklch(.69 .155 52);--accent-soft: oklch(.75 .155 58 / .14);--on-accent: oklch(.18 .02 60);--danger: oklch(.66 .185 26);--ok: oklch(.76 .12 155);--ring: oklch(.75 .155 58 / .45);--grain: .06;color-scheme:dark}@media(prefers-color-scheme:light){:root:not([data-theme]){--bg: oklch(.95 .008 88);--bg-elev: oklch(.975 .006 88);--surface: oklch(.99 .004 90);--surface-2: oklch(.925 .009 86);--border: oklch(.86 .012 82);--border-strong: oklch(.76 .014 76);--text: oklch(.25 .012 55);--muted: oklch(.47 .013 60);--faint: oklch(.6 .011 64);--accent: oklch(.58 .15 50);--accent-press: oklch(.52 .15 48);--accent-soft: oklch(.58 .15 50 / .12);--on-accent: oklch(.985 .01 88);--danger: oklch(.53 .19 26);--ok: oklch(.52 .12 155);--ring: oklch(.58 .15 50 / .4);--grain: .04;color-scheme:light}}:root[data-theme=light]{--bg: oklch(.95 .008 88);--bg-elev: oklch(.975 .006 88);--surface: oklch(.99 .004 90);--surface-2: oklch(.925 .009 86);--border: oklch(.86 .012 82);--border-strong: oklch(.76 .014 76);--text: oklch(.25 .012 55);--muted: oklch(.47 .013 60);--faint: oklch(.6 .011 64);--accent: oklch(.58 .15 50);--accent-press: oklch(.52 .15 48);--accent-soft: oklch(.58 .15 50 / .12);--on-accent: oklch(.985 .01 88);--danger: oklch(.53 .19 26);--ok: oklch(.52 .12 155);--ring: oklch(.58 .15 50 / .4);--grain: .04;color-scheme:light}:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--text-xs: 11px;--text-sm: 12.5px;--text-lg: 17px;--text-xl: clamp(19px, 3vw, 22px);--text-2xl: clamp(24px, 5vw, 30px);--dur-fast: .12s;--dur: .22s;--ease-spring: cubic-bezier(.2, .9, .3, 1.15)}}@layer base{*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:15px;line-height:1.55;font-feature-settings:"ss01","cv01";letter-spacing:-.006em;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.grain{position:fixed;inset:0;z-index:50;pointer-events:none;opacity:var(--grain);mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.hidden{display:none!important}::selection{background:var(--accent-soft)}}@layer ui{.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 26px;border-bottom:1px solid var(--border);position:sticky;top:0;background:color-mix(in oklch,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:40}.brand{display:flex;flex-direction:column;gap:1px;text-decoration:none;color:inherit}.brand-mark{font-size:21px;font-weight:600;letter-spacing:-.02em;line-height:1}.safelight{display:inline-block;width:6px;height:6px;margin-left:1px;border-radius:50%;background:var(--accent);box-shadow:0 0 9px 1px var(--accent);vertical-align:baseline;animation:pulse 3.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.safelight{animation:none}}.brand-sub{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}.topbar-actions{display:flex;align-items:center;gap:12px}.session{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:12px;color:var(--muted)}.session .muted{max-width:42ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}main{max-width:880px;margin:0 auto;padding:30px 26px 96px;position:relative;z-index:1}.view-head{margin-bottom:18px;flex-wrap:wrap;row-gap:10px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;margin-bottom:18px}h1,h2,h3{letter-spacing:-.02em;font-weight:600}h2{font-size:17px;margin:0 0 10px}h2.section{margin:30px 0 12px}h3{font-size:14px;margin:0 0 8px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:var(--font-mono);font-size:12px;color:var(--muted);letter-spacing:0}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.field,.exif-field{display:flex;flex-direction:column;gap:6px;margin:14px 0}.field>span,.exif-field>span{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}input,textarea,select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;font-family:var(--font-sans);font-size:14px;width:100%;resize:vertical;transition:border-color .12s ease,box-shadow .12s ease}input[type=text]{font-variant-numeric:tabular-nums}input::placeholder,textarea::placeholder{color:var(--faint)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}button{background:var(--accent);color:var(--on-accent);border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 16px;font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:-.01em;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease,transform .04s ease}button,.linkbtn{white-space:nowrap}button:hover{background:var(--accent-press)}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:default;transform:none}button.ghost{background:transparent;color:var(--text);border:1px solid var(--border);font-weight:500}button.ghost:hover{background:var(--surface-2);border-color:var(--border-strong)}button.danger{color:var(--danger);background:transparent;border:1px solid var(--border)}button.danger:hover{border-color:var(--danger);background:transparent}.small-btn{padding:5px 11px;font-size:12.5px}.small-btn:has(>.icon){display:inline-flex;align-items:center;justify-content:center;gap:6px}.icon-btn{width:34px;height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:15px}.icon-btn:hover{color:var(--text);background:var(--surface-2);border-color:var(--border-strong)}.status{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.status.ok{color:var(--ok)}.error,.status.err{color:var(--danger)}.error{font-size:13px}}@layer ui{.gallery-list{list-style:none;margin:0;padding:0;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr))}.gallery-list>:not(.gallery-row){grid-column:1 / -1}.gallery-row{border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px;cursor:pointer;background:var(--surface);transition:border-color .12s ease,background .12s ease,transform .06s ease}.gallery-row:hover{border-color:var(--accent);background:var(--bg-elev)}.g-title{font-weight:600;letter-spacing:-.01em}.g-desc{font-size:13px;margin-top:3px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-id{margin-top:6px}.photo-head{display:flex;gap:16px;align-items:flex-start}.thumb{width:100px;height:100px;flex:0 0 100px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--faint);font-family:var(--font-mono);font-size:11px}.thumb img{width:100%;height:100%;object-fit:cover}.photo-meta{min-width:0;word-break:break-all}.exif{margin:14px 0;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;background:var(--surface-2)}.exif summary{cursor:pointer;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.exif-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin-top:10px}@media(max-width:560px){.exif-grid{grid-template-columns:1fr}}.gear-list{list-style:none;margin:0 0 12px;padding:0}.gear-row{padding:10px 0;border-bottom:1px solid var(--border);font-size:14px}.gear-row:last-child{border-bottom:none}.gear-row,.workflow-step,.scene-tag-row{flex-wrap:wrap;row-gap:10px}.gear-row>:first-child,.workflow-step>:first-child,.scene-tag-row>:first-child{flex:1 1 15em;min-width:0}.gear-row>:last-child:not(:first-child),.workflow-step>:last-child:not(:first-child),.scene-tag-row>:last-child:not(:first-child){flex:0 0 auto;margin-left:auto}.gear-row>.row:last-child,.workflow-step>.row:last-child{flex-wrap:wrap;justify-content:flex-end;column-gap:8px;row-gap:6px}.gear-row .type-label,.gear-row .reserve-id>.row{flex-wrap:wrap;row-gap:4px}.library-section-intro{margin:3px 0 0}.library-ledger-strip{display:flex;flex-wrap:wrap;gap:8px 22px;margin:14px 0 12px;padding:10px 12px;border-block:1px solid var(--border);background:color-mix(in oklab,var(--surface-2) 76%,transparent);color:var(--muted);font:500 12px/1.4 var(--font-mono)}.library-ledger-strip>span{display:inline-flex;align-items:baseline;gap:6px}.library-ledger-strip strong{color:var(--text);font-size:15px}.library-scope-bar{display:flex;gap:7px;margin:14px 0 12px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.library-scope-bar::-webkit-scrollbar{display:none}.library-scope{display:inline-flex;flex:0 0 auto;align-items:center;gap:8px;min-height:38px;padding:7px 11px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--muted);font:600 12px/1 var(--font-body)}.library-scope:hover,.library-scope.active{border-color:color-mix(in oklab,var(--accent) 64%,var(--border));color:var(--text);background:color-mix(in oklab,var(--accent) 9%,transparent)}.library-scope-count{min-width:1.55em;padding:2px 5px;border-radius:999px;background:var(--surface-2);color:var(--muted);text-align:center}.library-filter-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(10rem,auto);gap:10px;align-items:end}.library-filter-bar .field,.library-filter-input{margin:0}.library-result-summary{margin:10px 0 2px}.shoot-row-identity{display:inline-flex;flex-direction:column;gap:2px}.status-chip.active{border-color:color-mix(in oklab,var(--accent) 50%,var(--border));color:var(--accent)}@media(max-width:600px){.library-filter-bar{grid-template-columns:1fr}.library-scope-bar{margin-inline:-4px;padding-inline:4px}.roll-library-list .gear-row>.row:last-child,.shoot-library-list .gear-row>.row:last-child{width:100%}.roll-library-list .gear-row>.row:last-child .primary-btn,.shoot-library-list .gear-row>.row:last-child .primary-btn{flex:1 1 auto}}.tab-bar{display:flex;flex-wrap:nowrap;gap:14px;margin:18px 0 20px;border-bottom:1px solid var(--border);padding-bottom:0;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.tab-bar::-webkit-scrollbar{display:none}.tab-btn{flex:0 0 auto;white-space:nowrap;background:transparent;color:var(--muted);border:none;border-bottom:2px solid transparent;border-radius:0;padding:8px 2px;margin-bottom:-1px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}@media(min-width:720px){.tab-bar{flex-wrap:wrap;gap:18px}}@media(max-width:719px){.tab-bar{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent)}}.tab-btn:hover{color:var(--text);background:transparent}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);background:transparent}}@layer ui{.workflow-steps{list-style:none;margin:10px 0 0;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.workflow-step{display:grid;grid-template-columns:30px minmax(140px,1fr) auto;align-items:center;padding:10px;border-bottom:1px solid var(--border);gap:10px;background:var(--surface)}.workflow-step:last-child{border-bottom:none}.workflow-step-number{display:inline-grid;place-items:center;width:28px;height:28px;border:1px solid color-mix(in oklch,var(--accent) 42%,var(--border));border-radius:50%;color:var(--accent);font-family:var(--font-mono);font-size:11px}.workflow-step-identity,.workflow-step-title{min-width:0}.workflow-step-title{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.workflow-step-summary{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workflow-step-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:5px}.workflow-icon-action{min-width:34px;padding-inline:8px}.workflow-step-empty{padding:16px;text-align:center}.workflow-step-add{display:grid;grid-template-columns:minmax(150px,1fr) auto;gap:8px}.workflow-step-select{min-width:0}.workflow-step-status{min-height:1.2em;margin:7px 0 0}.workflow-optional-check{margin:12px 0}.workflow-cardinality-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.workflow-connections{display:grid;gap:7px}.workflow-connection-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:13px}.workflow-connection-add{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) auto;gap:7px;padding-top:3px}.workflow-topology-summary{margin:0;text-align:right}.workflow-run-row{align-items:center;gap:14px}.workflow-run-identity{min-width:0}.workflow-run-actions{justify-content:flex-end}.step-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);margin-left:0}.photo-workflow-summary{margin-top:4px;max-width:560px;border:1px solid var(--border);border-radius:7px;background:var(--surface-2);word-break:normal}.photo-workflow-summary>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 9px;cursor:pointer;color:var(--muted)}.photo-workflow-summary>summary::-webkit-details-marker{display:none}.photo-workflow-summary>summary:after{content:"+";color:var(--accent);font-family:var(--font-mono)}.photo-workflow-summary[open]>summary:after{content:"−"}.workflow-summary-label{color:var(--text);font-size:12px;font-weight:650}.photo-workflow-stages{list-style:none;margin:0;padding:0 9px 6px}.photo-workflow-stages li{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:start;padding:7px 0;border-top:1px solid var(--border)}.photo-workflow-stages li>span:nth-child(2)>span{display:block;margin-top:1px}.workflow-stage-state{color:var(--faint);font-family:var(--font-mono)}.photo-workflow-stages .complete .workflow-stage-state{color:var(--ok)}.photo-workflow-stages .next .workflow-stage-state{color:var(--accent)}.workflow-branch-note{margin:0;padding:0 9px 9px 34px}.workflow-run-status{margin:0;padding:0 9px 9px 34px;text-transform:capitalize}.photo-workflow-stages .blocked .workflow-stage-state,.photo-workflow-stages .failed .workflow-stage-state{color:var(--danger)}.workflow-empty-link{appearance:none;display:inline-flex;margin-top:4px;padding:4px 0;border:0;background:none;color:var(--muted);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}.workflow-empty-link:hover{color:var(--accent)}.roll-chip.has-workflow{white-space:normal;overflow:visible}.roll-chip-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roll-workflow-progress{display:grid;gap:4px;margin-top:5px}.roll-progress-track{display:block;width:100%;height:3px;overflow:hidden;border-radius:999px;background:var(--border)}.roll-progress-fill{display:block;height:100%;border-radius:inherit;background:var(--accent)}@media(max-width:640px){.workflow-step{grid-template-columns:30px minmax(0,1fr);align-items:start}.workflow-step-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.workflow-step-actions .workflow-configure{grid-column:1 / -1}.workflow-step-actions button{min-height:42px;padding-inline:7px}.workflow-step-add,.workflow-cardinality-grid{grid-template-columns:1fr}.workflow-connection-row{align-items:flex-start}.workflow-connection-add{grid-template-columns:1fr}.workflow-connection-add button,.workflow-step-add button{width:100%}.workflow-run-row{align-items:stretch;flex-direction:column}.workflow-run-actions{display:grid;grid-template-columns:1fr;width:100%}.workflow-run-actions button{width:100%;min-height:44px}.photo-workflow-summary>summary{align-items:flex-start;flex-wrap:wrap;gap:4px 8px}.photo-workflow-summary>summary:after{margin-left:auto}.photo-workflow-stages li{grid-template-columns:16px minmax(0,1fr)}.photo-workflow-stages li>span:last-child{grid-column:2}}.step-badge.ok{color:var(--ok);border-color:color-mix(in oklch,var(--ok) 40%,var(--border))}.stage-kind-picker{display:flex;flex-wrap:wrap;gap:10px 16px;margin-bottom:14px}.inline-check{display:inline-flex;align-items:center;gap:5px;font-size:13px;cursor:pointer;color:var(--muted)}.inline-check input{width:auto}.modal-sub{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);margin:18px 0 8px}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;min-height:0;overflow-y:auto;overscroll-behavior:contain;z-index:200}.modal{width:min(500px,100%);max-height:90vh;max-height:min(90vh,calc(100dvh - 40px));min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;touch-action:pan-y;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow);border-color:var(--border-strong)}.batch-preview{margin:14px 0 0;padding:14px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:12px;white-space:pre-wrap;word-break:break-word;max-height:240px;overflow:auto}.login-view{display:flex;align-items:center;justify-content:center;min-height:calc(100dvh - 140px)}.login-card{width:100%;max-width:460px}.login-card .login-learn{margin-top:14px}.login-btn{white-space:nowrap}form#login-form{display:flex;gap:10px;margin-top:16px}form#login-form .handle-wrap{flex:1;position:relative}form#login-form input{width:100%}.handle-suggestions{position:absolute;z-index:60;top:calc(100% + 5px);left:0;right:0;margin:0;padding:5px;list-style:none;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);max-height:260px;overflow-y:auto}.handle-option{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:5px;cursor:pointer;font-family:var(--font-mono);font-size:13px}.handle-option:hover,.handle-option.active{background:var(--surface-2)}.handle-option .handle-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@layer ui{::view-transition-old(root),::view-transition-new(root){animation-duration:.28s}@keyframes reveal{0%{transform:translateY(7px)}to{transform:none}}.reveal{animation:reveal .34s both cubic-bezier(.2,.7,.2,1);animation-delay:calc(var(--i, 0) * 42ms)}@media(prefers-reduced-motion:reduce){.reveal,.skeleton{animation:none}::view-transition-old(root),::view-transition-new(root){animation:none}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{border-radius:6px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--bg-elev) 40%,var(--surface-2) 60%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}.skeleton-row{pointer-events:none;cursor:default}.skeleton-row:hover{border-color:var(--border);background:var(--surface)}.skeleton-title{height:15px;width:52%;margin-bottom:10px}.skeleton-line{height:11px;width:78%;margin-bottom:8px}.skeleton-line:last-child{width:60%}.skeleton-tabs{pointer-events:none}.skeleton-tab{height:30px;width:74px;border-radius:var(--radius-sm)}.empty-state{text-align:center;padding:60px 22px;border:1px dashed var(--border);border-radius:var(--radius-lg);background:var(--surface)}.empty-mark{width:34px;height:34px;margin:0 auto 16px;border-radius:50%;border:2px solid var(--accent);background:conic-gradient(var(--accent) 0 50%,transparent 0 100%)}.empty-title{font-size:16px;font-weight:600;margin-bottom:6px}.empty-hint{max-width:40ch;margin:0 auto}.scene-modal{width:min(780px,100%)}.scene-stage{margin:16px 0;text-align:center}.scene-img-wrap{position:relative;display:inline-block;max-width:100%;line-height:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;touch-action:none;cursor:crosshair}.scene-img-wrap img{display:block;max-width:100%;max-height:52vh;width:auto;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.scene-draw{position:absolute;inset:0}.scene-box{position:absolute;border:1.5px solid var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px #00000073}.scene-box.pending{border-style:dashed;background:transparent}.scene-box-label{position:absolute;top:-2px;left:-1px;transform:translateY(-100%);font-family:var(--font-mono);font-size:10px;letter-spacing:.03em;line-height:1.4;background:var(--accent);color:var(--on-accent);padding:1px 6px;border-radius:3px;white-space:nowrap}.scene-pending{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);padding:14px 16px;margin-bottom:14px}.scene-tags{margin-top:8px}.scene-tag-row{padding:9px 0;border-bottom:1px solid var(--border)}.scene-tag-row:last-child{border-bottom:none}.scene-tag-row.attaching{background:color-mix(in oklch,var(--accent) 8%,transparent);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:var(--radius-sm)}.scene-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle}.scene-edges{margin-top:12px}.scene-edge-form{margin-top:10px;gap:8px;align-items:center}.scene-edge-form select{width:auto;min-width:130px}.scene-edge-form input{max-width:140px}}@layer ui{.toast-host{position:fixed;left:0;right:0;bottom:0;z-index:300;display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 12px calc(84px + env(safe-area-inset-bottom));pointer-events:none}.toast{pointer-events:auto;max-width:460px;font-family:var(--font-mono);font-size:12.5px;padding:10px 14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;cursor:pointer}.toast.show{opacity:1;transform:none}.toast.ok{border-color:color-mix(in oklch,var(--ok) 45%,var(--border))}.toast.err{border-color:color-mix(in oklch,var(--danger) 55%,var(--border));color:var(--danger)}.save-bar{position:fixed;left:0;right:0;bottom:0;z-index:35;padding:12px 22px calc(12px + env(safe-area-inset-bottom));background:color-mix(in oklch,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border)}.save-bar[hidden]{display:none}.save-bar-inner{max-width:880px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.save-count{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.session-avatar{width:24px;height:24px;border-radius:50%;object-fit:cover;border:1px solid var(--border);background:var(--surface-2)}.session .handle{max-width:22ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-actions{margin-top:8px;align-items:stretch;flex-wrap:wrap}.modal-actions>button{display:inline-flex;align-items:center;justify-content:center;gap:6px}.confirm-checks{display:grid;gap:8px;margin:12px 0 4px}.confirm-check{display:flex;align-items:flex-start;gap:8px;font-size:.92rem;line-height:1.35;cursor:pointer}.confirm-check input{width:auto;margin-top:.2em;flex-shrink:0}@media(max-width:640px){.topbar{padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top))}.brand-mark{font-size:19px}.brand-sub{display:none}main{padding:18px 15px 104px}.card{padding:16px;border-radius:12px}h2{font-size:16px}input,textarea,select{font-size:16px;padding:11px 12px}button{padding:11px 16px}.small-btn{padding:8px 12px;font-size:13px}.row.between{flex-wrap:wrap;row-gap:10px}.icon-btn{width:40px;height:40px}.session .handle{max-width:11ch}.modal-overlay{align-items:flex-end;padding:0}.modal,.scene-modal{width:100%;max-width:100%;max-height:92vh;max-height:92dvh;border-radius:16px 16px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom))}.save-bar{padding:11px 15px calc(11px + env(safe-area-inset-bottom))}.photo-head{gap:12px}.thumb{width:76px;height:76px;flex-basis:76px}.exif-grid{grid-template-columns:1fr}.scene-img-wrap img{max-height:44vh}.toast{width:100%;text-align:center}}@media(pointer:coarse){.gallery-row,.tab-btn,.handle-option,.scene-tag-row button{min-height:44px}}.search-input{margin:0 0 14px}.field-hint{font-family:var(--font-mono);font-size:10.5px;color:var(--danger);min-height:0}input.invalid,textarea.invalid{border-color:var(--danger)}input.invalid:focus{box-shadow:0 0 0 3px color-mix(in oklch,var(--danger) 30%,transparent)}.section-head{align-items:baseline}.badge-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.badge{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in oklch,var(--accent) 30%,transparent)}.type-label{gap:10px;align-items:center;min-width:0}.type-thumb{display:none;width:42px;height:30px;flex:0 0 42px;border-radius:5px;border:1px solid var(--border);background:var(--surface-2) center / cover no-repeat}.type-thumb.has-img{display:inline-block}.inspect-uri{flex:1;word-break:break-all}.inspect-json{max-height:48vh;overflow:auto;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;font-family:var(--font-mono);font-size:11.5px;line-height:1.5;white-space:pre;word-break:normal}.linkbtn{display:inline-flex;align-items:center;text-decoration:none;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 16px;font-size:14px;font-weight:500}.linkbtn:hover{background:var(--surface-2);border-color:var(--border-strong)}.linkbtn.small{padding:5px 10px;font-size:12px;gap:5px}.suggest-lens{margin:2px 0 4px}.qty-badge{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text);background:var(--surface-2);border-radius:999px;padding:1px 8px;font-size:12px}.status-chip{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.status-chip.warn{color:#d98a2b;border-color:color-mix(in oklab,#d98a2b 45%,var(--border))}.reserve-id{display:flex;flex-direction:column;gap:2px;min-width:0}.frame-list{display:flex;flex-direction:column;gap:6px;margin:6px 0;max-height:38vh;overflow:auto}.frame-row{padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm)}.frame-num{font-variant-numeric:tabular-nums;font-weight:600;margin-right:8px}.photo-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;max-height:40vh;overflow:auto;margin-top:6px}.photo-pick{aspect-ratio:1;border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2) center/cover no-repeat;cursor:pointer;padding:0}.photo-pick.chosen{border-color:var(--accent, #e08a3c);box-shadow:0 0 0 2px var(--accent, #e08a3c) inset}.check-list{display:flex;flex-direction:column;gap:2px;max-height:26vh;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px}.check-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:6px;font-size:14px;cursor:pointer}.check-row:hover{background:var(--surface-2)}.check-row input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;margin:0;padding:0;accent-color:var(--accent, #e08a3c);cursor:pointer}.check-row span{flex:1;min-width:0}.check-row.locked{opacity:.82;cursor:default}.check-row.locked input[type=checkbox]{cursor:not-allowed}.inherit-tag{flex:0 0 auto;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:1px 7px}.places-list{display:flex;flex-direction:column;gap:4px}.place-row{padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm)}.primary-btn{color:var(--accent, #e08a3c)}.logger-overlay{position:fixed;inset:0;z-index:200;background:var(--bg, #0d0b0a);display:flex;flex-direction:column;padding:12px max(12px,env(safe-area-inset-left)) max(12px,env(safe-area-inset-bottom));gap:8px;overscroll-behavior:contain}.logger-top{align-items:center}.logger-top .row{align-items:center;gap:8px}.logger-frame{font-size:15px;font-weight:600;color:var(--text)}.logger-scroll{flex:1;overflow:auto;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}.logger-group{display:flex;flex-direction:column;gap:5px}.logger-group.row{flex-direction:row;align-items:center;gap:8px;flex-wrap:wrap}.logger-lab{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.dial-row,.chip-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.dial-btn,.gear-chip-btn{flex:0 0 auto;padding:9px 12px;min-width:44px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--text);font-size:14px;font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap}.dial-btn.on,.gear-chip-btn.on{background:var(--accent, #e08a3c);border-color:var(--accent, #e08a3c);color:#1a1206;font-weight:600}.logger-select{padding:8px 10px;border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);border:1px solid var(--border)}.logger-note{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.gps-pill{font-size:11px;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.gps-pill.ok{color:#7bd88f;border-color:#2f5f3a}.log-actions{display:flex;gap:8px}.log-actions .log-btn{flex:1;min-width:0;width:auto}.log-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px;font-size:17px;font-weight:700;border:none;border-radius:var(--radius-md, 12px);background:var(--accent, #e08a3c);color:#1a1206;cursor:pointer}.log-btn.secondary{flex:0 1 45%;background:var(--surface-2);color:var(--text);border:1px solid var(--border-strong, var(--border));font-size:14px;font-weight:600;padding:16px 14px}.log-btn.flash{filter:brightness(1.3)}.me-badge{font-size:10px;font-weight:700;letter-spacing:.03em;color:#1a1206;background:var(--accent, #e08a3c);border-radius:4px;padding:1px 5px}.logger-recent{display:flex;flex-direction:column;gap:3px;margin-top:4px}.logger-recent-row{display:flex;align-items:center;gap:10px;padding:5px 8px;border:1px solid var(--border);border-radius:6px}.logger-recent-row.pending{opacity:.7;border-style:dashed}.pending-dot{margin-left:auto;color:var(--text-muted)}.bundle-list{margin:12px 0;max-height:42vh;overflow:auto}.bundle-row{padding:9px 0;border-bottom:1px solid var(--border)}.bundle-row:last-child{border-bottom:none}.bundle-row .inspect-json{max-height:30vh;margin-top:8px}.bundle-badge{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.bundle-badge.create{color:var(--ok);border-color:color-mix(in oklch,var(--ok) 40%,var(--border))}.bundle-badge.update{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 40%,var(--border))}.bundle-badge.unchanged{color:var(--faint)}.danger-solid{background:var(--danger);color:#fff;border:1px solid transparent}.danger-solid:hover{background:color-mix(in oklch,var(--danger) 85%,#000)}.bundle-badge.delete{color:var(--danger);border-color:color-mix(in oklch,var(--danger) 45%,var(--border))}.prune-toggle{margin:10px 0}.term-input{position:relative}.term-menu{position:absolute;z-index:60;top:calc(100% + 4px);left:0;right:0;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);max-height:min(60vh,420px);overflow-y:auto;padding:4px}.term-section{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);padding:6px 8px 3px}.term-opt{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:7px 8px;border-radius:5px;cursor:pointer;font-size:14px}.term-opt:hover{background:var(--surface-2)}.term-sub{flex:0 1 auto;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gear-select{gap:10px;align-items:center}.gear-select select{flex:1}.scene-tools{margin-bottom:10px;gap:8px}.scene-tools .active{border-color:var(--accent);color:var(--accent)}.scene-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.svg-shape{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.svg-shape.pending{fill:none;stroke-dasharray:5}.svg-point{fill:var(--accent);stroke:none}.svg-vertex{fill:var(--accent);stroke:#fff;stroke-width:1px;vector-effect:non-scaling-stroke}.svg-mask{opacity:.42}.svg-editable{cursor:move;pointer-events:all}.svg-shape.sel{stroke-width:3px}.svg-handle{fill:var(--accent);stroke:#fff;stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:pointer;pointer-events:all}.scene-labels{position:absolute;inset:0;pointer-events:none}.scene-labels .scene-box-label{position:absolute;transform:translateY(-100%)}.rb-row,.dev-step{gap:6px;align-items:center;margin:6px 0}.rb-row input,.dev-step input{flex:1;min-width:80px}.rb-row select,.dev-step select{flex:0 0 auto}.profile-head{gap:16px;align-items:center}.profile-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;border:1px solid var(--border)}#profile-search{min-width:220px}#profile-search .term-input{position:relative}.gc-badge{font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in oklch,var(--accent) 30%,transparent)}.term-opt.gc-user{background:color-mix(in oklch,var(--accent) 6%,transparent)}.profile-links{gap:8px;margin-top:10px}.profile-links .linkbtn{padding:6px 12px;font-size:13px;line-height:1.55}.gallery-thumb{width:72px;flex:0 0 72px;align-self:stretch;min-height:56px;position:relative;border-radius:6px;border:1px solid var(--border);background:var(--surface-2) center / cover no-repeat;overflow:hidden}.gallery-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.gallery-rowtext{min-width:0;flex:1}.gallery-row.row{gap:12px;align-items:stretch}.term-opt.active{background:var(--surface-2)}}@layer ui{.icon{display:inline-block;vertical-align:-.18em;flex:0 0 auto}.iconbtn{display:inline-flex;align-items:center;gap:7px}button.primary-glow,.modal-actions button:not(.ghost):not(.danger-solid){box-shadow:0 0 0 0 var(--accent)}button:not(.ghost):not(.danger-solid):not(.tab-btn):hover{box-shadow:0 4px 18px -6px var(--accent)}.palette-overlay{align-items:flex-start}.palette{width:min(560px,100%);margin-top:12vh;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.palette-input{width:100%;border:none;border-bottom:1px solid var(--border);border-radius:0;background:transparent;padding:15px 18px;font-size:16px}.palette-input:focus{box-shadow:none;border-bottom-color:var(--accent)}.palette-list{max-height:48vh;overflow-y:auto;padding:6px}.palette-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;color:var(--muted)}.palette-item .icon{color:var(--faint)}.palette-item.active{background:var(--surface-2);color:var(--text)}.palette-item.active .icon{color:var(--accent)}.palette-label{flex:1;color:var(--text);font-size:14px}.palette-hint{flex:0 0 auto}.chip{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid transparent}.chip.c41{color:#eb7a52;background:#eb7a5224;border-color:#eb7a524d}.chip.e6{color:#c077d1;background:#c077d124;border-color:#c077d14d}.chip.bw{color:var(--muted);background:var(--surface-2);border-color:var(--border)}.chip.ecn2{color:#54b66e;background:#54b66e24;border-color:#54b66e4d}.toast{display:flex;align-items:center;gap:12px}.toast-action{background:transparent;border:1px solid currentColor;color:inherit;padding:3px 10px;font-size:11px;border-radius:6px}@media(max-width:640px){.iconbtn-label{display:none}}:root[data-density=compact]{--pad-card: 14px}:root[data-density=compact] .card{padding:var(--pad-card)}:root[data-density=compact] .gear-row{padding:6px 0}:root[data-density=compact] .field,:root[data-density=compact] .exif-field{margin:9px 0}:root[data-density=compact] main{padding-top:18px}kbd{font-family:var(--font-mono);font-size:11px;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:2px 7px;color:var(--muted)}.shortcut-row{padding:8px 0;border-bottom:1px solid var(--border)}.shortcut-row:last-child{border-bottom:none}.photo-card.photo-focused{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.row-copy{opacity:.6}.row-copy:hover{opacity:1}}@layer ui{.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-top:8px}.metric{background:var(--surface-2);border-radius:var(--radius);padding:14px}.metric-num{font-size:26px;font-weight:600;letter-spacing:-.02em}.metric-label{margin-top:2px}.photo-select{width:18px;height:18px;flex:0 0 18px;accent-color:var(--accent);margin-top:2px}.select-bar{z-index:36}#photos.grid-mode{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}#photos.grid-mode .photo-card{padding:10px;cursor:pointer}#photos.grid-mode .photo-card>details,#photos.grid-mode .photo-card>.field,#photos.grid-mode .photo-card>.row,#photos.grid-mode .photo-card>button,#photos.grid-mode .photo-card>.status{display:none}#photos.grid-mode .photo-head{flex-direction:column;align-items:stretch;gap:8px;position:relative}#photos.grid-mode .photo-select{position:absolute;top:4px;left:4px;z-index:1}#photos.grid-mode .thumb{width:100%;height:110px;flex-basis:auto}:root[data-theme=light] .chip.c41{color:#a93800;color:oklch(.5 .16 40)}:root[data-theme=light] .chip.e6{color:#833794}:root[data-theme=light] .chip.ecn2{color:#00642b;color:oklch(.44 .14 150)}@media(prefers-color-scheme:light){:root:not([data-theme]) .chip.c41{color:#a93800;color:oklch(.5 .16 40)}:root:not([data-theme]) .chip.e6{color:#833794}:root:not([data-theme]) .chip.ecn2{color:#00642b;color:oklch(.44 .14 150)}}.editor-hero{height:150px;border-radius:var(--radius-lg);margin-bottom:18px;background:var(--surface-2) center / cover no-repeat;border:1px solid var(--border)}::view-transition-group(hero-cover){animation-duration:.34s}@media(max-width:640px){.editor-hero{height:110px}}}@layer ui{select{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}button:active{transform:translateY(1px) scale(.99)}.reveal{animation-timing-function:var(--ease-spring)}.safelight-amb{position:fixed;inset:0;z-index:0;pointer-events:none;box-shadow:inset 0 0 200px 40px #ef852e0d}:root[data-theme=light] .safelight-amb{display:none}@media(prefers-color-scheme:light){:root:not([data-theme]) .safelight-amb{display:none}}.exif-readout{display:inline-flex;flex-wrap:wrap;gap:10px;margin-top:7px;padding:5px 10px;border-radius:6px;background:#0a0704;border:1px solid oklch(.3 .01 60);color:#fe9d4a;font-size:11.5px;letter-spacing:.02em;text-shadow:0 0 6px oklch(.78 .15 58 / .4)}.exif-readout .rd-dim{color:#a18e81;text-shadow:none}#photos.grid-mode{background:#070504;border-radius:var(--radius);padding:14px;gap:10px}#photos.grid-mode .photo-card{position:relative;background:#040302;border-radius:3px;border-color:#272320}#photos.grid-mode .photo-card:after{content:attr(data-frame);position:absolute;bottom:6px;left:8px;font-family:var(--font-mono);font-size:10px;color:#fe9d4a;background:#00000080;padding:0 5px;border-radius:3px}#photos.grid-mode .thumb{border-radius:2px}.editor-hero{position:relative}.editor-hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:linear-gradient(90deg,#1b1813,#28241d,#353029,#443e34,#544d41,#665e4e,#7c7360,#948a75,#b0a692,#cfc8ba)}.bar-chart{display:flex;flex-direction:column;gap:2px;margin-top:4px}.bar-label{color:var(--muted);text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-val{text-align:right;color:var(--text)}.bar-row{display:grid;grid-template-columns:90px 1fr 32px;align-items:center;gap:10px;padding:5px 0}.bar-track{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .6s var(--ease-spring)}.discover-progress{margin:4px 0 2px}.discover-progress-bar .bar-fill{transition:width .12s linear}.load-phase{margin:12px 4px 4px;min-height:1.2em}.busy-wait{margin:8px 0}.busy-bar{position:relative}.busy-bar-fill{width:38%;transition:none;animation:busy-bar-slide 1.15s ease-in-out infinite}@keyframes busy-bar-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}@media(prefers-reduced-motion:reduce){.busy-bar-fill{animation:none;width:100%;opacity:.55}}.empty-mark{border:none;background:none;color:var(--accent);display:flex;align-items:center;justify-content:center}.empty-mark .icon{width:34px;height:34px}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.segmented button{background:transparent;color:var(--muted);border:none;border-radius:0;padding:6px 9px}.segmented button.active{background:var(--surface-2);color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible,.term-opt:focus-visible,.palette-item:focus-visible{outline-offset:1px}@media(prefers-reduced-motion:reduce){.safelight{animation:none}.bar-fill{transition:none}*{scroll-behavior:auto!important}}}@layer ui{.topbar-actions{margin-left:auto}.primary-nav{display:none}.avatar-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--surface-2);color:var(--muted);overflow:hidden;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.avatar-btn:hover,.avatar-btn[aria-expanded=true]{border-color:var(--accent)}.avatar-btn img{width:100%;height:100%;object-fit:cover}.avatar-btn .icon{width:19px;height:19px}.settings-check{margin-top:6px;gap:10px}.settings-check span{font-size:14px}.conflict-tray{display:grid;gap:1rem}.conflict-card{border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.conflict-card h3,.conflict-card p{margin:0 0 .65rem}.conflict-diff-scroll{overflow-x:auto}.conflict-diff{width:100%;border-collapse:collapse;font-size:.82rem}.conflict-diff th,.conflict-diff td{border-bottom:1px solid var(--border);padding:.5rem;text-align:left;vertical-align:top}.conflict-diff pre{margin:0;max-width:24rem;white-space:pre-wrap;word-break:break-word}.conflict-changed{background:color-mix(in srgb,var(--accent) 8%,transparent)}.conflict-actions{margin-top:.85rem}.share-url{width:100%;-webkit-user-select:all;user-select:all}.profile-head{display:flex;flex-direction:column;gap:12px}.profile-id{gap:14px;align-items:center}.profile-summary{margin-top:3px}.profile-links{gap:8px;flex-wrap:wrap}.linkbtn.primary-link{background:var(--accent);color:#1c1206;border-color:var(--accent);font-weight:600}.linkbtn.bsky-link{background:#06c;color:#fff;border-color:#06c;font-weight:600}.linkbtn.bsky-link:hover{background:#0053a6;border-color:#0053a6}.profile-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;margin:6px 0 18px}.profile-header .profile-avatar{width:72px;height:72px;margin-bottom:4px}.profile-name{margin:0}.profile-header .profile-links{justify-content:center;margin-top:10px}.teaser-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}.teaser{text-decoration:none;color:inherit;display:block;min-width:0}.teaser-sheet{aspect-ratio:1 / 1;width:100%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2);border:1px solid var(--border)}.teaser-sheet.single{grid-template-columns:1fr;grid-template-rows:1fr}.teaser-cell{background:var(--surface-2) center / cover no-repeat}.teaser-title{margin-top:6px;font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teaser-count{margin-top:1px}.teaser:hover .teaser-sheet{border-color:var(--accent)}.filter-chip-row{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}.filter-chip{display:inline-flex;align-items:center;gap:7px;min-height:36px;box-sizing:border-box;padding:4px 12px 4px 7px;border:1px solid var(--border-strong, var(--border));border-radius:999px;background:var(--surface-2);color:var(--text);font-size:13px;font-weight:500;cursor:pointer;max-width:100%;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}.filter-chip:hover{border-color:var(--accent);background:var(--surface)}.filter-chip .type-thumb{width:24px;height:24px;border-radius:50%;flex:none}.filter-chip>span:not(.chip-count){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-chip.on{background:var(--accent);border-color:var(--accent);color:#1a1206;font-weight:600;box-shadow:0 0 0 1px var(--accent)}.chip-count{font-variant-numeric:tabular-nums;font-size:11px;opacity:.7;margin-left:2px}.filter-chip.on .chip-count{opacity:.85}.reveal{margin-top:8px}.reveal-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:13px;cursor:pointer}.reveal-caret{transition:transform .18s ease}.reveal.open>.reveal-summary .reveal-caret{transform:rotate(180deg)}.reveal-body{display:none;padding-top:12px}.reveal.open>.reveal-body{display:block}.show-more{margin-top:14px}.collapse-card>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 0;cursor:pointer;list-style:none;-webkit-tap-highlight-color:transparent}.collapse-card>summary::-webkit-details-marker{display:none}.collapse-card>summary::marker{content:""}.collapse-card>summary>*{pointer-events:none}.collapse-card>summary .reveal-caret{color:var(--muted);font-size:18px;transition:transform .18s ease}.collapse-card[open]>summary .reveal-caret{transform:rotate(180deg)}.collapse-card[open]>summary{margin-bottom:12px}.search-hint-row{gap:8px;margin-bottom:8px;flex-wrap:wrap;row-gap:8px}.search-help{display:grid;gap:9px;margin:12px 0}.search-help-row{display:grid;grid-template-columns:minmax(84px,auto) 1fr;gap:3px 12px;align-items:baseline}.search-help-q{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 6px;white-space:nowrap}@media(max-width:480px){.search-help-row{grid-template-columns:1fr;gap:2px}.search-help-q{justify-self:start}}.search-preset{font-size:12px;padding:3px 8px;border-radius:var(--radius-sm)}.search-near{margin-top:14px}.search-near>summary h3{color:var(--muted)}.search-results{margin-top:10px}.search-count{margin-bottom:8px}.search-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px}.search-hit{display:block;border-radius:var(--radius-sm);overflow:hidden;-webkit-tap-highlight-color:transparent}.search-cell{aspect-ratio:1 / 1;background-size:cover;background-position:center;background-color:var(--surface-2);transition:transform .15s ease}.search-hit:hover .search-cell,.search-hit:focus-visible .search-cell{transform:scale(1.04)}@media(min-width:700px){.search-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}}.date-range{gap:10px}.date-range .field{flex:1}}@layer ui{.map-canvas{width:100%;height:260px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);background:var(--surface-2)}.map-canvas.heat{height:300px;margin-top:6px}.map-modal{width:min(680px,94vw)}.map-modal .map-canvas{height:min(52vh,440px)}.maplibregl-popup-content{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:12px;padding:6px 9px;box-shadow:var(--shadow)}.maplibregl-popup-tip{display:none}.maplibregl-ctrl-group{border-radius:var(--radius-sm)!important;overflow:hidden}.devtimer-body{max-width:560px;width:100%;margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.devtimer-setup{display:flex;flex-direction:column;gap:12px}.devtimer-list{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto}.devtimer-opt{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.devtimer-opt.on{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 35%,transparent)}.devtimer-devtime{padding:8px 12px;border-radius:var(--radius-sm);font-size:14px}.devtimer-devtime.ok{background:color-mix(in oklab,var(--accent) 14%,transparent);color:var(--text)}.devtimer-devtime.warn{background:color-mix(in oklab,#d98a2b 18%,transparent);color:var(--text)}.devtimer-run{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:8px}.devtimer-step{font-size:20px;font-weight:600}.devtimer-time{font-variant-numeric:tabular-nums;font-size:clamp(64px,22vw,120px);line-height:1;font-weight:700;letter-spacing:-.02em}.devtimer-bar{width:100%;height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.devtimer-fill{height:100%;width:0;background:var(--accent);transition:width .25s linear}.devtimer-agitate{opacity:0;height:26px;display:flex;align-items:center;justify-content:center;padding:0 14px;border-radius:999px;background:var(--accent);color:#111;font-weight:700;letter-spacing:.06em;text-transform:uppercase;font-size:12px;transition:opacity .12s}.devtimer-agitate.on{opacity:1;animation:agpulse .5s ease-in-out infinite}@keyframes agpulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.devtimer-controls{gap:10px;width:100%;justify-content:center}.devtimer-controls .log-btn{width:auto;flex:1 1 auto;min-width:92px}.devtimer-controls .log-btn.secondary{flex:0 1 92px}.devtimer-controls .ghost{flex:0 0 auto;white-space:nowrap}.devtimer-body[data-developing="1"]{background:radial-gradient(120% 80% at 50% 0%,color-mix(in oklab,var(--accent) 8%,transparent),transparent)}.lint-pill{min-width:26px;text-align:center;padding:2px 8px;border-radius:999px;font-weight:700;font-size:12px;background:var(--surface-2);border:1px solid var(--border)}.lint-pill.warn{background:color-mix(in oklab,#d98a2b 22%,transparent);border-color:transparent}.lint-pill.info{background:color-mix(in oklab,var(--accent) 16%,transparent);border-color:transparent}.roll-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(120px,1fr);gap:8px;overflow-x:auto;padding-bottom:4px}.roll-col{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px;display:flex;flex-direction:column;gap:6px;min-height:60px}.roll-col-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.roll-chip{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.framelink-list{max-height:320px;overflow:auto;margin-top:8px}.framelink-thumb{width:40px;height:28px;border-radius:4px;background:var(--surface-2) center/cover no-repeat;border:1px solid var(--border);flex:0 0 auto}.gear-row.warn-row{border-color:color-mix(in oklab,#d98a2b 45%,var(--border))}.frames-location-choice{align-items:flex-start;margin:12px 0 18px;padding:10px;border:1px solid var(--border);background:var(--surface-2)}.frames-location-choice>span,.frames-shoot-choice>span{display:flex;flex-direction:column;gap:2px}.frames-import-file{margin:18px 0;padding:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklab,var(--surface-2) 58%,transparent)}.frames-import-heading .modal-sub{margin:0 0 3px}.frames-import-heading .status-chip{max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frames-import-assignment{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.frames-import-assignment .field{min-width:0;margin:0}.frames-shoot-choice{margin-top:10px;padding-inline:0}.frames-clusters{display:flex;flex-direction:column;gap:8px;margin-top:12px}.frames-cluster-card{position:relative;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.frames-gap-marker{margin:-12px -12px 10px;padding:6px 10px;border-bottom:1px solid color-mix(in oklab,var(--accent) 36%,var(--border));color:var(--accent);background:color-mix(in oklab,var(--accent) 7%,transparent);font-size:10px;letter-spacing:.04em;text-transform:uppercase}.frames-cluster-meta{justify-content:space-between;gap:4px 12px}.frames-cluster-actions{justify-content:flex-end;gap:7px;margin-top:9px}.frames-cluster-actions select{width:auto;min-width:9rem}@media(max-width:640px){.frames-import-file{padding:11px}.frames-import-assignment{grid-template-columns:1fr}.frames-cluster-actions{display:grid;grid-template-columns:minmax(0,1fr) auto}.frames-cluster-actions>:only-child{grid-column:1 / -1}.frames-cluster-actions select{width:100%;min-width:0}}.enum-control{display:flex;flex-direction:column;gap:6px}.enum-custom{width:100%}.enum-custom.hidden{display:none}.enum-list-control{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.55rem .8rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--radius-sm)}.enum-list-option{display:flex;align-items:center;gap:.55rem;min-width:0}.enum-list-option input{width:auto;margin:0}.enum-list-custom{grid-column:1 / -1}.check-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow:auto}.process-entry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.agitation-schedule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.development-stage-editor,.development-stage-list{display:flex;flex-direction:column;gap:12px}.development-sequence-tools,.development-add-stage{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.development-sequence-tools .field{margin:0}.development-stage-card{min-width:0;max-width:100%;padding:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.development-stage-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.development-stage-header,.development-stage-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.development-stage-heading{justify-content:flex-start;flex-wrap:wrap}.development-stage-actions{flex:0 0 auto;gap:4px}.development-stage-actions .icon-btn{width:36px;min-width:36px;height:36px;padding:0}.development-stage-core,.development-stage-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.development-stage-core .field,.development-stage-detail-grid .field{min-width:0;margin:0}.development-stage-card details,.development-stage-card .field,.development-stage-card .enum-control{min-width:0;max-width:100%}.development-stage-card .field>input:not([type=checkbox]),.development-stage-card .field>select,.development-stage-card .field>textarea,.development-stage-card .enum-control>input,.development-stage-card .enum-control>select{min-width:0;max-width:100%;width:100%}.development-stage-core .field:nth-child(1),.development-stage-core .field:nth-child(2){grid-column:span 2}.development-stage-details{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}.development-stage-details>summary{cursor:pointer;color:var(--muted);font-size:.9rem}.development-stage-subsection{margin-top:14px}.field-label{display:block;margin-bottom:7px;color:var(--muted);font:600 11px/1.25 var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.development-role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.development-role-option{display:flex;align-items:center;gap:7px;min-width:0;padding:7px 8px;border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.84rem}.development-role-option input{flex:0 0 auto;margin:0}.development-activity-row{width:100%;color:var(--text);text-align:left}.roll-processing-head{gap:10px;margin-top:18px}.roll-processing-head .modal-sub{margin:0}.roll-processing-actions{gap:7px}.roll-processing{display:flex;flex-direction:column;gap:6px;margin-top:9px}.roll-processing-row{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px;color:var(--text);text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.roll-processing-row:hover{border-color:color-mix(in oklab,var(--accent) 55%,var(--border))}.roll-processing-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.roll-processing-mark{min-width:42px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;color:var(--muted);font:600 10px/1 var(--font-mono);letter-spacing:.09em;text-align:center}.roll-processing-mark.develop{border-color:color-mix(in oklab,var(--accent) 50%,var(--border));color:var(--accent)}.roll-processing-copy{min-width:0;display:flex;flex-direction:column;gap:2px}.roll-processing-copy .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roll-processing-date{white-space:nowrap}@media(max-width:560px){.process-entry-grid,.agitation-schedule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.process-time-grid .field:last-child{grid-column:1 / -1}.roll-processing-row{grid-template-columns:auto minmax(0,1fr)}.roll-processing-date{grid-column:2}.roll-processing-actions{width:100%}.roll-processing-actions .small-btn{flex:1 1 0}.development-sequence-tools,.development-add-stage,.development-stage-core,.development-stage-detail-grid{grid-template-columns:1fr}.development-sequence-tools .small-btn,.development-add-stage .small-btn{width:100%}.development-stage-core .field:nth-child(1),.development-stage-core .field:nth-child(2){grid-column:auto}.development-role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.development-stage-card{padding:12px}}.stat-block{margin-top:16px}.stat-h{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin:0 0 6px}.stat-line{padding:5px 0;gap:10px}.stat-line strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;flex:1}.coverage-line{margin-top:14px}.chip-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.gear-chip{display:inline-flex;align-items:center;gap:8px;padding:5px 10px 5px 5px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);font-size:13px;max-width:100%}.gear-chip .type-thumb{width:26px;height:26px;border-radius:50%;flex:none}.gear-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reorder{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none}.reorder .drag-handle{cursor:grab;background:none;border:none;color:var(--faint);padding:2px;touch-action:none;display:flex}.reorder .drag-handle:hover{color:var(--muted)}.reorder .drag-handle:active{cursor:grabbing}.reorder .move-up,.reorder .move-down{padding:1px 7px;min-width:26px;line-height:1.25}.photo-card.dragging{opacity:.55;outline:2px dashed var(--accent);outline-offset:-2px}#photos.grid-mode .reorder{display:none}.cov-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.cov-badge{font-family:var(--font-mono);font-size:10px;letter-spacing:.03em;padding:1px 7px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:var(--surface-2)}.cov-badge.partial{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 30%,transparent)}.cov-badge.full{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in oklch,var(--accent) 30%,transparent)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;align-items:stretch;border-top:1px solid var(--border);background:color-mix(in oklch,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding-bottom:env(safe-area-inset-bottom)}.bottom-nav .nav-item{flex:1 1 0;min-width:0;min-height:58px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 2px 6px;background:none;border:none;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.01em;cursor:pointer;transition:color .15s var(--ease-spring, ease)}.bottom-nav .nav-item .icon{width:22px;height:22px}.bottom-nav .nav-item.active{color:var(--accent)}.bottom-nav .nav-item:active{transform:scale(.94)}.bottom-nav .nav-ico{display:flex}.bottom-nav .nav-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:370px){.bottom-nav .nav-item{font-size:9.5px;letter-spacing:0}.bottom-nav .nav-item .icon{width:20px;height:20px}}@media(max-width:719px){#app{padding-bottom:calc(78px + env(safe-area-inset-bottom))}}@media(min-width:720px){.bottom-nav{display:none}.primary-nav{display:grid;grid-template-columns:repeat(4,minmax(78px,1fr));flex:1 1 430px;max-width:470px;gap:2px;margin-left:8px;padding:3px;border:1px solid var(--border);border-radius:999px;background:color-mix(in oklch,var(--surface-2) 55%,transparent)}.primary-nav .nav-tab{background:transparent;border:1px solid transparent;color:var(--muted);width:100%;padding:7px 10px;border-radius:999px;font-size:14px;font-weight:600;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}@media(max-width:900px){.primary-nav{grid-template-columns:repeat(4,minmax(70px,1fr));margin-left:0}.primary-nav .nav-tab{padding-inline:7px;font-size:13px}.topbar-actions{gap:7px}}:root[data-theme=light] .primary-nav .nav-tab:hover{color:var(--text);background:var(--surface-2);border-color:var(--border);box-shadow:none}:root[data-theme=light] .primary-nav .nav-tab.active{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in oklch,var(--accent) 28%,transparent);box-shadow:none}@media(prefers-color-scheme:light){:root:not([data-theme]) .primary-nav .nav-tab:hover{color:var(--text);background:var(--surface-2);border-color:var(--border);box-shadow:none}:root:not([data-theme]) .primary-nav .nav-tab.active{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in oklch,var(--accent) 28%,transparent);box-shadow:none}}:root[data-theme=dark] .primary-nav .nav-tab:hover{color:var(--text);background:#f5923a12;border-color:#f5923a38;box-shadow:0 0 22px -4px #f5923a6b}:root[data-theme=dark] .primary-nav .nav-tab.active{color:var(--accent);background:#f5923a1c;border-color:#f5923a61;box-shadow:0 0 26px -6px #f5923a7a}@media(prefers-color-scheme:dark){:root:not([data-theme]) .primary-nav .nav-tab:hover{color:var(--text);background:#f5923a12;border-color:#f5923a38;box-shadow:0 0 22px -4px #f5923a6b}:root:not([data-theme]) .primary-nav .nav-tab.active{color:var(--accent);background:#f5923a1c;border-color:#f5923a61;box-shadow:0 0 26px -6px #f5923a7a}}}}@layer ui{.account-menu{position:fixed;z-index:60;background:var(--bg-elev);border:1px solid var(--border-strong);box-shadow:var(--shadow);padding:6px;left:8px;right:8px;bottom:calc(72px + env(safe-area-inset-bottom));border-radius:16px;animation:menu-in .16s var(--ease-spring, ease)}@keyframes menu-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.menu-account{padding:8px 10px 6px;color:var(--muted);font-size:12px;font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item{display:flex;align-items:center;gap:11px;width:100%;padding:11px 10px;background:none;border:none;color:var(--text);border-radius:var(--radius-sm);text-align:left;font-size:14.5px;cursor:pointer}.menu-item:hover{background:var(--surface-2)}.menu-item .icon{width:18px;height:18px;color:var(--muted);flex:none}.menu-item.danger,.menu-item.danger .icon{color:var(--danger)}.menu-sep{height:1px;background:var(--border);margin:5px 8px}@media(min-width:720px){.account-menu{inset:60px 16px auto auto;width:264px;border-radius:var(--radius)}}:root[data-theme=dark] .avatar-btn:hover,:root[data-theme=dark] .avatar-btn[aria-expanded=true]{background:#f5923a17;border-color:#f5923a6b;box-shadow:0 0 22px -4px #f5923a73}:root[data-theme=dark] .account-menu{background:#151210e0;border-color:#f5923a33;box-shadow:var(--shadow),0 0 36px -10px #f5923a61}:root[data-theme=dark] .menu-item:hover{background:#f5923a14}@media(prefers-color-scheme:dark){:root:not([data-theme]) .avatar-btn:hover,:root:not([data-theme]) .avatar-btn[aria-expanded=true]{background:#f5923a17;border-color:#f5923a6b;box-shadow:0 0 22px -4px #f5923a73}:root:not([data-theme]) .account-menu{background:#151210e0;border-color:#f5923a33;box-shadow:var(--shadow),0 0 36px -10px #f5923a61}:root:not([data-theme]) .menu-item:hover{background:#f5923a14}}.view-sub{margin:3px 0 0}.ac-field{position:relative}.ac-menu{position:absolute;z-index:60;top:calc(100% + 4px);left:0;right:0;list-style:none;margin:0;padding:4px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);max-height:240px;overflow-y:auto}.ac-opt{padding:8px 10px;border-radius:5px;cursor:pointer;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-opt:hover,.ac-opt.active{background:var(--surface-2)}.rb-field{position:relative;flex:1;min-width:90px}.rb-field input{width:100%}.add-gear{display:inline-flex;align-items:center;gap:5px}.add-gear .icon{width:15px;height:15px}.gear-empty{margin:6px 0 2px}.gear-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 6px;padding:8px 10px;background:color-mix(in oklch,var(--accent) 8%,transparent);border:1px solid color-mix(in oklch,var(--accent) 22%,transparent);border-radius:var(--radius-sm)}.gear-suggest:empty{display:none}.gear-suggest .icon{color:var(--accent);flex:none}.subtle-actions{margin-top:8px;gap:6px}.photo-save{width:100%;margin-top:10px}.gear-section h2{font-size:15px}.modal-sub{margin:16px 0 4px;font-size:13px;color:var(--muted);font-weight:600}.modal-sub:first-child{margin-top:2px}}@layer ui{.wizard-overlay{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in oklch,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:menu-in .2s ease}.wizard{width:100%;max-width:580px;max-height:92vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:22px}.wizard-progress{display:grid;gap:7px;color:var(--muted);font-size:11px;letter-spacing:.02em}.wizard-progress-copy strong{color:var(--text);font-size:12px;font-weight:600}.wizard-track{height:3px;overflow:hidden;border-radius:999px;background:var(--surface-2)}.wizard-track span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s ease}.wizard-hero{display:flex;justify-content:center;color:var(--accent);margin:8px 0 2px}.wizard-hero .icon{width:40px;height:40px}.wizard-title{margin:0;text-align:center;font-size:22px;letter-spacing:-.02em}.wizard-title:focus{outline:none}.wizard-sub{max-width:50ch;margin:0 auto;text-align:center;line-height:1.5}.wizard-practices{display:grid;grid-template-columns:1fr 1fr;gap:9px}.wizard-practice{position:relative;display:grid;grid-template-columns:28px 1fr;align-items:start;gap:9px;min-height:78px;padding:12px;cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.wizard-practice:hover{border-color:color-mix(in oklch,var(--accent) 65%,var(--border))}.wizard-practice.selected{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 10%,var(--surface-2))}.wizard-practice>input{position:absolute;opacity:0;pointer-events:none}.wizard-practice-icon{display:grid;place-items:center;color:var(--accent)}.wizard-practice strong,.wizard-practice small,.wizard-choice strong,.wizard-choice small{display:block}.wizard-practice small,.wizard-choice small{margin-top:3px;line-height:1.35}.wizard-radio-group{display:flex;flex-wrap:wrap;gap:8px 14px;margin:0;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm)}.wizard-radio-group legend{padding:0 5px;color:var(--muted);font-size:12px;font-weight:600}.wizard-added{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:6px}.wizard-added li{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-2);border-radius:var(--radius-sm);font-size:14px}.wizard-added .icon{color:var(--accent);flex:none}.wizard-added-name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wizard-added .icon-btn{padding:5px}.wizard-empty{margin:2px 0;padding:16px;text-align:center;border:1px dashed var(--border);border-radius:var(--radius-sm)}.wizard-add-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.wizard-add{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:44px;padding:10px;border:1px dashed var(--border);background:none;color:var(--text);border-radius:var(--radius-sm);cursor:pointer}.wizard-add:hover{border-color:var(--accent);color:var(--accent)}.wizard-choices{display:grid;grid-template-columns:1fr 1fr;gap:9px}.wizard-choice{position:relative;text-align:left;padding:14px;border:1px solid var(--border);background:var(--surface-2);border-radius:var(--radius-sm);cursor:pointer}.wizard-choice:hover{border-color:var(--accent)}.wizard-choice.chosen{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 12%,var(--surface-2))}.wizard-choice>input{position:absolute;opacity:0;pointer-events:none}.wizard-callout{padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--accent) 5%,var(--surface));font-size:13px}.wizard-callout.warning{border-color:color-mix(in oklch,#d69a34 55%,var(--border));background:color-mix(in oklch,#d69a34 8%,var(--surface))}.wizard-callout.ok{border-color:color-mix(in oklch,var(--accent) 35%,var(--border))}.wizard-callout>p{margin:3px 0}.wizard-callout summary{cursor:pointer;font-weight:600}.wizard-recipe-list{margin:9px 0;padding-left:20px;line-height:1.45}.wizard-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wizard-summary-group{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm)}.wizard-summary-group h3{margin:0 0 5px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.wizard-summary-group ul{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.wizard-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.wizard-foot.end{justify-content:flex-end}.wizard-next-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}@media(max-width:640px){.wizard-overlay{padding:0;align-items:stretch}.wizard{max-width:none;max-height:none;border-radius:0;padding:max(20px,env(safe-area-inset-top)) 16px max(20px,env(safe-area-inset-bottom));justify-content:flex-start}.wizard-practices,.wizard-choices,.wizard-summary,.wizard-next-actions{grid-template-columns:1fr}.wizard-foot{position:sticky;bottom:calc(-1*max(20px,env(safe-area-inset-bottom)));margin:6px -16px calc(-1*max(20px,env(safe-area-inset-bottom)));padding:12px 16px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:color-mix(in oklch,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}}@media(prefers-reduced-motion:reduce){.wizard-overlay,.wizard-track span{animation:none;transition:none}}}@layer ui{.discover-setups-head{margin-bottom:6px}.discover-filter{margin:8px 0 12px}.setup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.setup-card{display:flex;gap:10px;padding:12px;min-width:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-decoration:none;color:inherit}.setup-card:hover{border-color:var(--accent)}.setup-av{width:40px;height:40px;flex:0 0 auto;border-radius:50%;object-fit:cover;border:1px solid var(--border);background:var(--surface-2)}.setup-body{min-width:0;flex:1}.setup-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setup-handle{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setup-summary{font-size:12px;margin-top:4px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.setup-meta{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}.setup-tag{font-size:11px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.setup-tag.you{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 45%,var(--border))}.setup-more{margin-top:12px}#following-body{width:min(920px,100%);margin:0 auto}#following-view .view-head{align-items:flex-start}.following-title{flex:1;min-width:0}.following-explainer{width:min(920px,100%);margin:0 auto 12px;padding:9px 11px;border-left:2px solid color-mix(in oklch,var(--accent) 65%,var(--border));border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:color-mix(in oklch,var(--accent) 5%,var(--surface))}.following-explainer strong{color:var(--text)}.following-loading{text-align:center}.following-loading p{margin:0}.following-source-summary{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}.following-cache-status{min-height:1.35em;margin:-4px 0 12px}.following-cache-status.refreshing:before{display:inline-block;width:.55em;height:.55em;margin-right:7px;border:1px solid currentColor;border-right-color:transparent;border-radius:50%;content:"";animation:following-spin .8s linear infinite}@keyframes following-spin{to{transform:rotate(360deg)}}.follow-source{display:inline-flex;align-items:center;width:max-content;padding:2px 7px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-family:var(--font-mono);font-size:9.5px;line-height:1.35;letter-spacing:.02em;white-space:nowrap}.follow-source.source-grain,.follow-source.source-grain-bluesky{color:var(--accent);border-color:color-mix(in oklch,var(--accent) 42%,var(--border));background:color-mix(in oklch,var(--accent) 7%,transparent)}.follow-source.source-bluesky{color:#70b7ff;border-color:#1684efc7;background:#1684ef14}.following-feed{padding-top:18px;padding-bottom:6px}.following-section-head{padding:0 2px 13px}.following-section-head h3,.following-section-head p{margin:0}.following-section-head p{margin-top:4px}.following-events{border-top:1px solid var(--border)}.following-event{display:grid;grid-template-columns:72px 42px minmax(0,1fr) auto;gap:12px;align-items:start;min-width:0;padding:17px 2px;border-bottom:1px solid var(--border)}.following-event:last-child{border-bottom:0}.activity-stamp{width:max-content;max-width:72px;margin-top:2px;padding:3px 6px;overflow:hidden;border:1px solid var(--border-strong);border-radius:3px;color:var(--faint);font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap}.following-avatar{width:42px;height:42px;flex:0 0 42px;border:1px solid var(--border);border-radius:50%;object-fit:cover;background:var(--surface-2)}.following-avatar.fallback{background:radial-gradient(circle at 50% 34%,var(--faint) 0 18%,transparent 19%),radial-gradient(circle at 50% 105%,var(--faint) 0 38%,transparent 39%),var(--surface-2)}.following-event-body{min-width:0}.following-event-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.following-byline{display:flex;align-items:center;flex-wrap:wrap;gap:4px 7px;min-width:0}.following-person-link{color:var(--text);font-weight:600;text-decoration:none}.following-person-link:hover{color:var(--accent)}.following-handle,.activity-time{font-size:10.5px}.activity-time{flex:0 0 auto;line-height:1.8}.activity-lines{display:grid;gap:7px;margin:9px 0 0;padding:0;list-style:none}.activity-lines li{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px 8px;font-size:13px}.activity-line-link{color:inherit;text-decoration-color:color-mix(in oklch,var(--faint) 55%,transparent);text-decoration-thickness:1px;text-underline-offset:3px}.activity-line-link:hover,.activity-line-link:focus-visible{color:var(--accent);text-decoration-color:currentColor}.activity-kind{padding:1px 5px;border-radius:3px;background:var(--surface-2);color:var(--faint);font-size:8.5px;letter-spacing:.04em;text-transform:uppercase}.activity-photo{width:78px;height:78px;border:1px solid var(--border);border-radius:var(--radius-sm);object-fit:cover;background:var(--surface-2)}.following-roster{margin-top:12px}.following-roster>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;font-weight:600}.following-roster>p{margin:10px 0}.following-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.following-person{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0;padding:9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface-2) 45%,transparent)}.following-person .following-avatar{width:36px;height:36px}.following-person-name{display:flex;flex-direction:column;min-width:0}.following-person-name>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.following-person-name .mono{font-size:9.5px}@media(max-width:640px){.following-event{grid-template-columns:38px minmax(0,1fr);gap:7px 10px}.activity-stamp{grid-column:2}.following-event>.following-avatar{grid-column:1;grid-row:2;width:38px;height:38px}.following-event-body{grid-column:2;grid-row:2}.activity-photo{grid-column:2;width:100%;height:min(48vw,190px)}.following-event-head{display:block}.activity-time{display:block;margin-top:3px}.following-people{grid-template-columns:1fr}}.type-asset-row{gap:12px;align-items:flex-start;margin-bottom:4px}.type-asset-row .type-thumb{flex:0 0 auto;width:64px;height:64px}.type-asset-fields{flex:1;min-width:0}.technical-specs{margin:14px 0 4px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface-2) 55%,transparent)}.technical-specs>summary,.technical-spec-edit>summary{cursor:pointer;font-weight:600;color:var(--text)}.technical-spec-view{margin-top:10px}.technical-spec-list{display:grid;grid-template-columns:minmax(120px,.75fr) minmax(0,1.25fr);gap:6px 14px;margin:0;font-size:13px}.technical-spec-list dt{color:var(--muted)}.technical-spec-list dd{margin:0;min-width:0;overflow-wrap:anywhere}.technical-spec-structured{white-space:pre-wrap;font-family:var(--font-mono);font-size:11px;line-height:1.45}.technical-spec-edit{margin-top:12px;border-top:1px solid var(--border);padding-top:9px}.technical-spec-edit>summary{color:var(--muted);font-size:12px}.technical-spec-json{width:100%;min-height:150px;resize:vertical;font-family:var(--font-mono);font-size:11px;line-height:1.45}@media(max-width:480px){.technical-spec-list{grid-template-columns:1fr;gap:2px}.technical-spec-list dd{margin-bottom:7px}}.recipe-technical,.process-technical{margin:10px 0;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in oklch,var(--surface-2) 55%,transparent)}.recipe-technical>summary,.process-technical>summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:600}.recipe-technical .technical-spec-list{margin-top:9px}.devtimer-temperature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(max-width:480px){.devtimer-temperature-grid{grid-template-columns:1fr}}}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
