:root{--bg:#f4f3f0;--paper:#fff;--ink:#111;--ink-2:#444;--muted:#7a7a76;--line:#d9d8d3;--line-2:#ebeae6;--accent:#1f4fd6;--danger:#a3342a;--ok:#2f6b3a;--radius:2px;--sans:"Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gutter:clamp(16px, 4vw, 40px)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:500;line-height:1.15}p{margin:0 0 1em}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}kbd{font:11px/1 var(--mono);border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:2px 4px}.mono{font-family:var(--mono);letter-spacing:0;font-size:12px}.muted{color:var(--muted)}.small{font-size:12.5px}.error{color:var(--danger)}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.btn{border:1px solid var(--ink);border-radius:var(--radius);cursor:pointer;white-space:nowrap;background:#fff;align-items:center;gap:6px;padding:6px 10px;line-height:1.2;display:inline-flex}.btn:hover{background:var(--ink);color:#fff}.btn:disabled{opacity:.4;cursor:default}.btn:disabled:hover{color:inherit;background:#fff}.btn.primary{background:var(--ink);color:#fff}.btn.primary:hover{background:#000}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{color:inherit;text-underline-offset:3px;background:0 0;text-decoration:underline}.btn.small{padding:3px 8px;font-size:12.5px}.btn.danger{color:var(--danger);border-color:var(--line)}.btn.danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.seg{border:1px solid var(--ink);border-radius:var(--radius);background:#fff;display:inline-flex;overflow:hidden}.seg button{border:0;border-right:1px solid var(--line);cursor:pointer;color:var(--ink-2);background:0 0;padding:6px 11px;line-height:1.2}.seg button:last-child{border-right:0}.seg button.on{background:var(--ink);color:#fff}.seg.small button{padding:3px 9px;font-size:12.5px}.textseg{gap:14px;display:flex}.textseg button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;padding:0;font-size:13px}.textseg button.on{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.pill{font-size:12px;font-family:var(--mono);color:var(--muted)}.pill.ok{color:var(--ok)}.site{background:var(--bg);flex-direction:column;min-height:100%;display:flex}.site-head{padding:18px var(--gutter) 14px;border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;display:flex}.brand{flex-direction:column;gap:1px;font-size:14px;display:flex}.brand-role{color:var(--muted)}.site-head nav{gap:18px;font-size:14px;display:flex}.site-head nav a:hover,.site-head nav a.active{text-underline-offset:4px;text-decoration:underline}.site main{padding:0 var(--gutter) 80px;flex:1}.site-foot{padding:16px var(--gutter);border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;font-size:12.5px;display:flex}.site-foot a:hover{text-decoration:underline}.intro{max-width:46ch;padding:56px 0 48px}.intro p{letter-spacing:-.01em;font-size:clamp(20px,2.4vw,26px);line-height:1.3}.index-head{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);justify-content:space-between;margin-bottom:18px;padding:10px 0;font-size:13px;display:flex}.index-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 14px;display:grid}.index-thumb{aspect-ratio:4/3;background:var(--line-2);overflow:hidden}.index-thumb img{object-fit:cover;width:100%;height:100%}.index-item:hover .index-thumb{outline:1px solid var(--ink);outline-offset:-1px}.index-caption{grid-template-columns:auto 1fr auto;align-items:baseline;gap:2px 10px;padding-top:8px;font-size:13px;display:grid}.index-caption .mono{color:var(--muted)}.index-title{grid-column:2}.index-tags{color:var(--muted);grid-column:2}.index-year{color:var(--muted);grid-area:1/3}.thumb-placeholder{background:var(--line-2);width:100%;height:100%}@media (width<=900px){.index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.index-grid{grid-template-columns:1fr}}.about{grid-template-columns:minmax(0,2fr) minmax(220px,1fr);gap:48px;max-width:1100px;padding:56px 0;display:grid}.about-text p{letter-spacing:-.01em;max-width:46ch;font-size:clamp(18px,2vw,22px);line-height:1.35}.about-facts,.facts{grid-template-columns:90px 1fr;align-content:start;gap:0 16px;margin:0;font-size:13.5px;display:grid}.about-facts dt,.facts dt{color:var(--muted);border-top:1px solid var(--line);padding:8px 0}.about-facts dd,.facts dd{border-top:1px solid var(--line);margin:0;padding:8px 0}.about-facts a,.facts a{text-underline-offset:3px;text-decoration:underline}@media (width<=760px){.about{grid-template-columns:1fr;gap:28px}}.project{padding-top:28px}.project-head{margin-bottom:18px}.project-head .back{color:var(--muted);margin-bottom:26px;font-size:13px;display:inline-block}.project-head .back:before{content:"← "}.project-head .back:hover{color:var(--ink)}.project-head h1{margin-bottom:8px;font-size:clamp(26px,3.6vw,40px)}.project-meta{color:var(--muted);margin:0}.viewer{border:1px solid var(--line);height:min(72vh,760px);position:relative}.viewer canvas{touch-action:none}.viewer-ui{pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;bottom:12px;left:14px;right:14px}.viewer-ui>*{pointer-events:auto;background:#f4f3f0e6;padding:5px 8px}.viewer-hint{color:var(--muted)}.viewer.walk canvas{cursor:move}.viewer .walk-hint{top:12px;bottom:auto;left:12px}.shots-gallery{grid-template-columns:1fr 1fr;gap:24px 14px;margin-top:14px;display:grid}.shots-gallery figure{margin:0}.shots-gallery figure.wide{grid-column:1/-1}.shots-gallery button{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.shots-gallery img{border:1px solid var(--line);width:100%}.shots-gallery figcaption{color:var(--ink-2);margin-top:6px;font-size:13px}.shots-gallery figcaption .mono{color:var(--muted);margin-right:6px}@media (width<=760px){.shots-gallery{grid-template-columns:1fr}}.project-body{border-top:1px solid var(--ink);grid-template-columns:minmax(0,3fr) minmax(260px,2fr);gap:48px;margin-top:36px;padding:40px 0 0;display:grid}.project-body.facts-only{grid-template-columns:minmax(0,640px)}.project-text p{max-width:60ch;color:var(--ink);font-size:17px;line-height:1.5}.palette{vertical-align:middle;gap:4px;display:inline-flex}.palette i{border:1px solid #0000001f;width:16px;height:16px;display:inline-block}@media (width<=760px){.project-body{grid-template-columns:1fr;gap:24px}.viewer{height:60vh}}.lightbox{z-index:60;cursor:zoom-out;background:#f4f3f0f7;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:40px;display:flex;position:fixed;inset:0}.lightbox img{border:1px solid var(--line);max-width:100%;max-height:82vh}.lightbox p{color:var(--ink-2);margin:0}.lightbox button{color:var(--ink);border:1px solid var(--ink);cursor:pointer;background:0 0;width:40px;height:40px;font-size:16px;position:absolute;top:50%;transform:translateY(-50%)}.lb-prev{left:18px}.lb-next{right:18px}.gate{place-items:center;min-height:100%;padding:24px;display:grid}.gate-card{background:var(--paper);border:1px solid var(--line);flex-direction:column;gap:12px;width:min(360px,100%);padding:28px;display:flex}.gate-card h1{font-size:22px}.gate-card input{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:9px 10px}.studio-list{max-width:1200px;padding:32px var(--gutter);margin:0 auto}.studio-list-head{border-bottom:1px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;padding-bottom:14px;display:flex}.studio-list-head h1{font-size:26px}.empty{text-align:center;border:1px dashed var(--line);padding:40px}.cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:24px 14px;display:grid}.card{background:0 0}.card-thumb{aspect-ratio:4/3;background:var(--line-2);border:1px solid var(--line);display:block}.card-thumb img{object-fit:cover;width:100%;height:100%}.card-thumb .thumb-placeholder{color:var(--muted);place-items:center;font-size:12px;display:grid}.card-body{flex-direction:column;gap:6px;padding:10px 0 0;display:flex}.card-body h3{font-size:15px;font-weight:500}.studio{background:var(--bg);flex-direction:column;height:100vh;display:flex}.studio-bar{background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.title-input{background:0 0;border:1px solid #0000;min-width:120px;max-width:360px;padding:4px 6px;font-size:15px;font-weight:500}.title-input:hover,.title-input:focus{border-color:var(--line);background:#fff;outline:none}.save-state{color:var(--muted);font-size:12px;font-family:var(--mono)}.save-state.unsaved{color:#8a5a00}.save-state.error{color:var(--danger)}.save-state.saved{color:var(--ok)}.mood-select{border:1px solid var(--ink);border-radius:var(--radius);background:#fff;padding:6px 8px}.studio-main{flex:1;grid-template-columns:250px minmax(0,1fr) 300px;min-height:0;display:grid}.panel{background:var(--paper);flex-direction:column;gap:10px;padding:14px;font-size:13px;display:flex;overflow-y:auto}.panel h2{font-size:15px}.panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:8px;font-size:11px;font-weight:500}.catalog{border-right:1px solid var(--line)}.inspector{border-left:1px solid var(--line)}.inspector section{flex-direction:column;gap:8px;display:flex}.inspector .meta{border-top:1px solid var(--line);margin-top:8px;padding-top:14px}.studio-center{flex-direction:column;min-width:0;min-height:0;display:flex}.studio-canvas{flex:1;min-width:0;min-height:0;position:relative}.studio-canvas canvas{touch-action:none;display:block}.hint{color:var(--ink-2);pointer-events:none;background:#f4f3f0e6;flex-wrap:wrap;gap:12px;padding:5px 8px;font-size:12px;display:flex;position:absolute;bottom:10px;left:10px}.walk-hint{bottom:10px;left:10px}.toast{background:var(--ink);color:#fff;pointer-events:none;padding:6px 12px;font-size:12.5px;position:absolute;top:12px;left:50%;transform:translate(-50%)}.item-label{background:var(--ink);color:#fff;white-space:nowrap;padding:3px 7px;font-size:12px}.dim-label{font-family:var(--mono);color:var(--ink-2);white-space:nowrap;background:#ffffffd9;padding:2px 6px;font-size:11px}.dim-label.rotated{transform:rotate(-90deg)}.walkpad{-webkit-user-select:none;user-select:none;touch-action:none;flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute;bottom:12px;right:12px}.walkpad div{gap:3px;display:flex}.walkpad button{border:1px solid var(--ink);cursor:pointer;touch-action:none;background:#ffffffe6;width:42px;height:42px;font-size:14px}.walkpad button:active{background:var(--ink);color:#fff}.search{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);padding:7px 9px}.tabs{flex-wrap:wrap;gap:2px 10px;display:flex}.tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:1px solid #0000;padding:2px 0;font-size:12.5px}.tabs button:hover{color:var(--ink)}.tabs button.on{color:var(--ink);border-bottom-color:var(--ink)}.catalog-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.catalog-item{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;background:#fff;flex-direction:column;align-items:flex-start;gap:3px;padding:8px;display:flex}.catalog-item:hover{border-color:var(--ink)}.catalog-item .label{font-size:13px}.catalog-item .dims{color:var(--muted);font-size:11px;font-family:var(--mono)}.swatch-pair{gap:2px;display:flex}.swatch-pair i{border:1px solid #0000001a;width:14px;height:14px}.field{justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.field.col{flex-direction:column;align-items:stretch;gap:4px}.field>span:first-child{color:var(--ink-2)}.field-input{align-items:center;gap:6px;display:flex}.field-input em{color:var(--muted);min-width:24px;font-size:12px;font-style:normal;font-family:var(--mono)}.field input[type=number],.field input[type=text],.field select,.field textarea{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:92px;padding:5px 7px}.field.col input,.field.col textarea{width:100%}.field select{width:150px}.field textarea{resize:vertical}.field input[type=range]{width:110px}.field-input.color input[type=color]{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:30px;height:28px;padding:0 2px}.field-input.color input[type=text]{width:90px;font-family:var(--mono);font-size:12px}.swatches{flex-wrap:wrap;gap:4px;display:flex}.swatch{cursor:pointer;border:1px solid #00000026;width:18px;height:18px;padding:0}.swatch:hover{outline:1px solid var(--ink);outline-offset:1px}.cover-preview img{border:1px solid var(--line);margin-top:4px}.mood-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.mood{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left;background:#fff;flex-direction:column;align-items:flex-start;gap:1px;padding:7px 9px;display:flex}.mood b{align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:flex}.mood b:before{content:"";border:1px solid #0003;border-radius:50%;width:9px;height:9px;display:inline-block}.mood.day b:before{background:#fff2cc}.mood.golden b:before{background:#f0b36a}.mood.evening b:before{background:#8d95b8}.mood.night b:before{background:#2a2d3e}.mood span{color:var(--muted);font-size:11px}.mood.on{border-color:var(--ink)}.shots-tray{border-top:1px solid var(--line);background:var(--paper);flex-direction:column;gap:6px;padding:6px 12px 10px;font-size:13px;display:flex}.shots-tray.closed{padding-bottom:6px}.shots-head{align-items:center;gap:12px;display:flex}.shots-row{gap:10px;padding-bottom:4px;display:flex;overflow-x:auto}.shots-empty{padding:10px 0}.shot{flex-direction:column;flex:0 0 180px;gap:4px;margin:0;display:flex}.shot img{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--line);width:180px}.shot input{border:1px solid var(--line);border-radius:var(--radius);padding:4px 6px;font-size:12px}.shot-actions{gap:4px;display:flex}.shot-actions button{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;padding:2px 7px;font-size:11px}.shot-actions button:hover{border-color:var(--ink)}.shot-actions button:disabled{opacity:.4;cursor:default}.shot-actions .danger{color:var(--danger);margin-left:auto}.modal-back{z-index:50;background:#14141466;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border:1px solid var(--line);flex-direction:column;gap:12px;width:min(760px,100%);padding:22px;display:flex}.modal h2{font-size:18px}.template-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;display:grid}.template{text-align:left;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;display:flex}.template:hover{border-color:var(--ink)}.template b{font-size:14px;font-weight:500}.template span{color:var(--muted);font-size:12.5px}@media (width<=980px){.studio{height:auto;min-height:100vh}.studio-main{grid-template-columns:1fr}.studio-center{order:-1}.studio-canvas{height:60vh}.catalog,.inspector{border:0;border-top:1px solid var(--line);max-height:50vh}}
