:root{--bg:#f4f4f5;--panel:#fff;--panel-2:#fafafa;--line:#e4e4e7;--line-strong:#d4d4d8;--text:#18181b;--muted:#71717a;--accent:#3b5bdb;--accent-soft:#e7ecff;--danger:#c92a2a;--ok:#2b8a3e;--warn:#e67700;--radius:6px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:13px/1.45 var(--font);margin:0}h1{margin:0 0 12px;font-size:22px}h2{margin:0 0 10px;font-size:16px}h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px;font-size:12px}a{color:var(--accent);text-decoration:none}code,.mono{font-family:var(--mono);font-size:12px}.muted{color:var(--muted)}.small{font-size:11px}.error{color:var(--danger)}.ok{color:var(--ok)}.pad{padding:16px}.spacer{flex:1}button,.button,.upload-button{font:inherit;border:1px solid var(--line-strong);background:var(--panel);color:var(--text);border-radius:var(--radius);cursor:pointer;white-space:nowrap;align-items:center;gap:4px;padding:4px 10px;display:inline-flex}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary,.upload-button{background:var(--accent);border-color:var(--accent);color:#fff}button.link{color:var(--accent);background:0 0;border:none;padding:0}button.icon{justify-content:center;min-width:24px;padding:2px 6px}button.danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger)}input,select,textarea{font:inherit;border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--text);background:#fff;min-width:0;padding:4px 6px}textarea{resize:vertical;width:100%}input.invalid{border-color:var(--danger);background:#fff5f5}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.narrow{width:64px}.app-header{color:#fafafa;background:#18181b;align-items:center;gap:16px;height:44px;padding:0 16px;display:flex}.brand{color:#fff;align-items:center;gap:6px;font-weight:700;display:flex}.brand-mark{color:#91a7ff;font-size:18px}.app-nav{gap:14px;display:flex}.app-nav a{color:#d4d4d8}.app-nav a:hover{color:#fff}.app-header-slot{flex:1}.chip{color:#e4e4e7;background:#27272a;border-color:#3f3f46;font-size:12px}.page{max-width:960px;margin:0 auto;padding:24px 16px 64px}.page.wide{max-width:1280px}.page-section{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px 18px}.card-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.card-link{border:1px solid var(--line);color:var(--text);border-radius:8px;align-items:center;gap:12px;padding:10px 12px;display:flex}.card-link:hover{border-color:var(--accent)}.badge{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:1px 6px;font-size:11px}.badge.small{font-size:10px}.form-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.field{flex-direction:column;gap:3px;min-width:0;display:flex}.field>span{color:var(--muted);font-size:11px}.field small{color:var(--muted)}.inline-field{align-items:center;gap:6px;min-width:0;display:inline-flex}.inline-field>span{color:var(--muted);min-width:14px;font-size:11px}.inline-field input{width:100%}.check,.radio{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.radio{align-items:flex-start;margin-bottom:8px}.stack{gap:10px;margin:8px 0 0 22px;display:grid}.dialog-backdrop{z-index:50;background:#00000059;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--panel);color:var(--text);border-radius:10px;width:min(520px,100vw - 32px);padding:18px 20px;box-shadow:0 20px 50px #00000040}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.button{text-decoration:none}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.library{grid-template-columns:minmax(0,1fr);align-content:start;gap:10px;display:grid;position:relative}.library-toolbar{align-items:center;gap:8px;min-width:0;display:flex}.search-field{border:1px solid var(--line-strong);border-radius:var(--radius);min-width:0;color:var(--muted);background:#fff;flex:1;align-items:center;gap:6px;padding:0 8px;display:flex}.search-field:focus-within{border-color:var(--accent);outline:2px solid var(--accent-soft)}.search-field input{background:0 0;border:none;outline:none;width:100%;padding:5px 0}.upload-tags{flex:1;min-width:0}.tag-row{flex-wrap:wrap;gap:4px;display:flex}.library-panel .tag-row{scrollbar-width:none;flex-wrap:nowrap;padding-right:16px;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 85%,#0000);mask-image:linear-gradient(90deg,#000 85%,#0000)}.library-panel .tag-row::-webkit-scrollbar{display:none}.tag{background:var(--panel-2);border-color:var(--line);color:var(--muted);border-radius:999px;flex-shrink:0;padding:2px 9px;font-size:11px}.tag.active{background:var(--accent);border-color:var(--accent);color:#fff}.outcomes{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:6px 8px;font-size:12px}.outcomes summary{cursor:pointer;color:var(--ok)}.outcomes ul{gap:2px;max-height:140px;margin:6px 0 0;padding:0;list-style:none;display:grid;overflow:auto}.outcomes li{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.library-count{margin:0}.library-empty{border:1.5px dashed var(--line-strong);text-align:center;border-radius:8px;padding:20px 12px}.drop-overlay{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;z-index:5;background:#e7ecffeb;border-radius:10px;place-items:center;font-weight:600;display:grid;position:absolute;inset:-4px}.thumb{aspect-ratio:1;border-radius:6px;place-items:center;display:grid;overflow:hidden}.thumb img{object-fit:contain;width:100%;height:100%;display:block}.piece-tiles{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.piece-tile{cursor:grab;gap:4px;min-width:0;display:grid;position:relative}.piece-tile .thumb{border:1px solid var(--line);transition:border-color .12s}.piece-tile:hover .thumb{border-color:var(--accent)}.tile-name{text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.25;overflow:hidden}.tile-add{background:var(--accent);border-color:var(--accent);color:#fff;opacity:0;border-radius:6px;justify-content:center;width:22px;height:22px;padding:0;transition:opacity .12s;position:absolute;top:4px;right:4px}.piece-tile:hover .tile-add,.tile-add:focus-visible{opacity:1}.piece-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.piece-card{border:1px solid var(--line);background:var(--panel);border-radius:10px;gap:8px;min-width:0;padding:8px;display:grid;position:relative}.piece-card:hover{border-color:var(--line-strong);box-shadow:0 2px 8px #0000000f}.piece-meta{gap:3px;min-width:0;display:grid}.piece-name,.piece-id{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.piece-name{font-weight:600}.piece-id{color:var(--muted);font-size:11px}.tags-input{padding:3px 6px;font-size:12px}.card-delete{opacity:0;background:#ffffffe6;transition:opacity .12s;position:absolute;top:12px;right:12px}.piece-card:hover .card-delete,.card-delete:focus-visible{opacity:1}.editor-page{flex-direction:column;height:100vh;display:flex}.editor{flex:1;grid-template-columns:272px 1fr 340px;min-height:0;display:grid}.left,.right{background:var(--panel);flex-direction:column;min-height:0;display:flex}.left{border-right:1px solid var(--line)}.right{border-left:1px solid var(--line)}.left-body,.right-body{flex:1;overflow:auto}.left-body{overflow-x:hidden}.left-body .library{padding:10px}.tabs{border-bottom:1px solid var(--line);flex-shrink:0;gap:2px;padding:0 4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:9px 8px 7px}.tabs button.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.centre{flex-direction:column;min-width:0;min-height:0;display:flex}.doc-title{background:var(--panel);padding:6px 12px 0;font-weight:600}.toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;display:flex}.toolbar .sep{background:var(--line);width:1px;height:20px;margin:0 4px}.save-state{color:var(--muted);font-size:12px}.save-dirty,.save-saving{color:var(--warn)}.save-error,.save-conflict{color:var(--danger);font-weight:600}.canvas-scroll{background:#e4e4e7;flex:1;place-items:center;padding:40px;display:grid;position:relative;overflow:auto}.stage{background:repeating-conic-gradient(#f4f4f5 0 25%, #fff 0 50%) 0 0 / 20px 20px;position:relative;box-shadow:0 1px 3px #00000026}.art,.art>svg{width:100%;height:100%;display:block;position:absolute;inset:0}.art{cursor:default}.art [data-node]{cursor:move}.binding .art [id]:hover{filter:drop-shadow(0 0 2px #e03131)drop-shadow(0 0 1px #e03131);cursor:crosshair}.grid-overlay{pointer-events:none;position:absolute;inset:0}.grid-overlay path{stroke:#3b5bdb1f;stroke-width:1px}.frame-overlay{pointer-events:none;border:1px dashed #c92a2a99;position:absolute}.frame-overlay span{color:#c92a2acc;font-size:10px;position:absolute;top:-16px;left:0}.moveable-target{transform-origin:0 0;pointer-events:none;position:absolute;top:0;left:0}.bind-highlight{outline-offset:1px;pointer-events:none;outline:2px solid #e03131;position:absolute}.canvas-error{border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius);background:#fff5f5;padding:6px 10px;position:absolute;top:10px;left:10px;right:10px}.ratio-toggle{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex;position:absolute;bottom:8px;right:12px}.layers{min-height:100%;padding:4px 0 24px}.layer-list{margin:0;padding:0;list-style:none}.layer-row{cursor:default;-webkit-user-select:none;user-select:none;border-top:2px solid #0000;border-bottom:2px solid #0000;align-items:center;gap:4px;height:28px;padding-right:4px;display:flex}.layer-row:hover{background:var(--panel-2)}.layer-row.selected{background:var(--accent-soft)}.layer-row.hidden-node .layer-name{opacity:.45}.layer-row.hint-before{border-top-color:var(--accent)}.layer-row.hint-after{border-bottom-color:var(--accent)}.layer-row.hint-into,.drop-tail.hint-into{outline:2px solid var(--accent);outline-offset:-2px}.drop-tail{height:40px}.option-row{color:var(--muted);font-size:12px}.option-row.shown{color:var(--text)}.twisty{width:16px;color:var(--muted);background:0 0;border:none;justify-content:center;padding:0}.twisty.none{visibility:hidden}.kind{text-align:center;width:16px;color:var(--muted)}.kind-slot{color:#9c36b5}.kind-group{color:#1971c2}.layer-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.rename{flex:1;height:22px}.row-icon{opacity:0;background:0 0;border:none;padding:0 2px;font-size:11px}.layer-row:hover .row-icon,.row-icon.on{opacity:.85}.panel-body{grid-template-columns:minmax(0,1fr);gap:4px;padding:12px;display:grid}.section{border-bottom:1px solid var(--line);gap:8px;margin-bottom:8px;padding:4px 0 12px;display:grid}.section:last-child{border-bottom:none}.section-head{justify-content:space-between;align-items:center;display:flex}.section-head h3{margin:0}.grid2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px 10px;display:grid}.button-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.card{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;gap:8px;margin-bottom:8px;padding:8px;display:grid}.card.drop-over{border-color:var(--accent);background:var(--accent-soft)}.card-head{align-items:center;gap:6px;display:flex}.name-input{flex:1;font-weight:600}.swatch{vertical-align:middle;border:1px solid #00000026;border-radius:3px;flex-shrink:0;display:inline-block}.colour-field{align-items:center;gap:4px;display:inline-flex}.colour-field input[type=color]{width:28px;height:24px;padding:1px}.colour-field .hex{width:78px}.label-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.lang{font-size:10px;font-weight:600}.palette{gap:6px;display:grid}.palette-entry{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.palette-entry .label-fields input{width:100%}.linked-rule{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.linked-rule input[type=range]{width:80px}.bind-table{border-collapse:collapse;width:100%}.bind-table td{vertical-align:middle;padding:3px 4px 3px 0}.bind-table select{max-width:130px}.bind-table tr.unmapped{opacity:.75}.options{gap:6px;margin:0;padding:0;list-style:none;display:grid}.option{border:1px solid var(--line);background:#fff;border-radius:6px;gap:6px;padding:6px;display:grid}.option.shown{border-color:var(--accent)}.option-head{align-items:center;gap:4px;display:flex}.option-head .name-input{flex:0 110px;width:110px}.option-head .muted{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.preview-image{border:1px solid var(--line);aspect-ratio:1;border-radius:8px;place-items:center;display:grid;overflow:hidden}.preview-image img{object-fit:contain;width:100%;height:100%}.small-preview{width:160px;position:relative}.small-preview span{position:absolute;bottom:2px;left:4px}.checker{background:repeating-conic-gradient(#f4f4f5 0 25%, #fff 0 50%) 0 0 / 16px 16px}.palette-picks{gap:2px;margin-left:6px;display:inline-flex}.swatch-button{border-radius:4px;padding:2px}.swatch-button.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.frame-row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.frame-row .name-input{flex:0 80px}.frame-row .narrow{width:48px}.code{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--line);white-space:pre;border-radius:6px;max-height:320px;padding:8px;font-size:11px;overflow:auto}.issues,.versions{gap:4px;margin:0;padding-left:16px;display:grid}.toast{color:#fff;z-index:60;background:#18181b;border-radius:8px;padding:8px 14px;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000040}.card,.option,.section,.palette{grid-template-columns:minmax(0,1fr)}.frame{flex-direction:column;min-height:100vh;display:flex}.frame-body{flex:1;grid-template-columns:272px minmax(0,1fr);display:grid}.frame-main{width:100%;max-width:1200px;padding:24px 32px 64px}.sidebar{background:var(--panel);border-right:1px solid var(--line);align-self:start;height:calc(100vh - 48px);padding:16px 10px 16px 12px;position:sticky;top:0;overflow-y:auto}.sidebar-head{justify-content:space-between;align-items:center;padding:0 6px 8px;display:flex}.sidebar-head a{color:var(--text);font-weight:600}.sidebar-list,.sidebar-sub{margin:0;padding:0;list-style:none}.sidebar-project{color:var(--text);border-radius:6px;align-items:center;gap:8px;padding:6px;display:flex}.sidebar-project:hover{background:var(--panel-2)}.sidebar-project.active{background:var(--accent-soft)}.sidebar-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sidebar-sub{margin:2px 0 6px 30px}.sidebar-sub a{color:var(--muted);border-radius:4px;padding:3px 6px;display:block}.sidebar-sub a.active,.sidebar-head a.active{color:var(--accent)}.project-dot{background:var(--accent);color:#fff;border-radius:6px;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:inline-grid}.project-dot.big{border-radius:9px;width:36px;height:36px;font-size:16px}.page-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.page-head h1{margin:0}.breadcrumb{color:var(--muted);margin-bottom:6px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:16px 0;padding:0;list-style:none;display:grid}.project-card{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:10px;flex-direction:column;gap:6px;height:100%;padding:14px;display:flex}.project-card:hover{border-color:var(--accent)}.project-stats{color:var(--text)}.stack-0{gap:10px;display:grid}.danger-zone{border-color:#ffc9c9}button.danger:not(:disabled){color:var(--danger);border-color:var(--danger)}.frame-main .page-section{margin-top:12px}.left,.right{position:relative}.resize-handle{z-index:20;cursor:col-resize;touch-action:none;width:9px;position:absolute;top:0;bottom:0}.resize-left{right:-5px}.resize-right{left:-5px}.resize-handle:after{content:"";background:0 0;width:1px;transition:background .12s;position:absolute;top:0;bottom:0;left:4px}.resize-handle:hover:after,.resize-handle:focus-visible:after,.resize-handle.dragging:after{background:var(--accent);width:2px;left:3.5px}.resize-handle:focus-visible{outline:none}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing .art,body.resizing iframe{pointer-events:none}.toolbar button{height:28px}.toolbar button svg,.button svg{flex-shrink:0}.kind,.twisty{place-items:center;display:inline-grid}.row-icon{color:var(--muted);place-items:center;width:22px;height:22px;display:inline-grid}.row-icon:hover{color:var(--text)}.row-icon.on{color:var(--accent)}.toolbar{scrollbar-width:thin;flex-wrap:nowrap;overflow-x:auto}.toolbar>*{flex-shrink:0}.use-it{grid-template-columns:96px minmax(0,1fr);align-items:start;gap:10px;display:grid}.use-it img{border:1px solid var(--line);background:var(--panel-2);border-radius:50%}.preset-values{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.preset-values li{flex-direction:column;gap:4px;display:flex}.preset-value{align-items:center;gap:6px;min-width:0;display:flex}.preset-value .icon{color:var(--muted)}.preset-value .icon.open{color:var(--accent);border-color:var(--accent)}.preset-current{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;min-width:0;margin-left:auto;display:inline-flex;overflow:hidden}.preset-values .tag-row{align-items:center;padding-left:30px}.preset-tags{width:100%}.preset-slot-tags{align-items:center}.preset-values .tag.excluded{opacity:.4;text-decoration:line-through}.preset-url{overflow-wrap:anywhere;margin-top:8px}.preset-any{margin:0;padding-left:30px}.presets-page{align-items:flex-start;gap:16px;display:flex}.presets-main{flex:1;min-width:0}.presets-toolbar{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:10px 12px;display:flex}.presets-toolbar input[type=search]{width:220px}.presets-toolbar .tag .count{opacity:.6;margin-left:2px;font-size:11px}.presets-group{margin-bottom:22px}.presets-group h2{align-items:center;gap:8px;margin:0 0 8px;font-size:13px;display:flex}.presets-group h2 small{font-weight:400}.presets-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;display:grid}.presets-empty{background:var(--panel);border:1px dashed var(--line-strong);text-align:center;border-radius:8px;padding:24px}.preset-tile{background:var(--panel);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:10px;position:relative;overflow:hidden}.preset-tile:hover{border-color:var(--line-strong)}.preset-tile.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.preset-tile-actions{opacity:0;gap:4px;transition:opacity .1s;display:flex;position:absolute;top:8px;right:8px}.preset-tile:hover .preset-tile-actions,.preset-tile:focus-within .preset-tile-actions{opacity:1}.preset-tile-actions>*{background:#fffffff2;padding:2px 7px;font-size:11px}.preset-tile-art{background:var(--panel-2);border-bottom:1px solid var(--line);place-items:center;height:148px;display:grid}.preset-tile-art img{border-radius:60px}.preset-tile-placeholder{background:var(--line);opacity:.5;border-radius:60px;width:120px;height:120px;display:block}.preset-tile-placeholder.big{border-radius:90px;width:180px;height:180px}.preset-tile-placeholder.small{border-radius:26px;width:52px;height:52px}.preset-tile-body{gap:4px;padding:10px 12px;display:grid}.preset-tile-title{align-items:baseline;gap:6px;min-width:0;display:flex}.preset-tile-title b{font-size:14px}.preset-tile-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.preset-tile-open{color:var(--muted)}.preset-tile-open b{color:var(--text);font-weight:600}.preset-tags-row{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.preset-tag{background:var(--accent-soft);color:var(--accent);border-radius:4px;align-items:center;gap:2px;margin-left:2px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-flex}.preset-tag-x{color:inherit;background:0 0;border:none;padding:0 0 0 2px;line-height:1}.preset-tags-row .preset-tag-input{width:70px;padding:1px 6px;font-size:11px}.preset-pill{white-space:nowrap;border-radius:999px;padding:0 7px;font-size:10.5px;font-weight:600}.preset-pill.ok{color:var(--ok);background:#ebfbee}.preset-pill.warn{color:var(--warn);background:#fff4e6}.preset-detail{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-shrink:0;width:340px;max-height:calc(100vh - 80px);position:sticky;top:16px;overflow-y:auto}.preset-detail-art{background:var(--panel-2);border-bottom:1px solid var(--line);place-items:center;padding:18px;display:grid}.preset-detail-art img{border-radius:90px}.preset-detail section{border-bottom:1px solid var(--line);gap:6px;padding:12px 14px;display:grid}.preset-detail section:last-child{border-bottom:none}.preset-detail h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);justify-content:space-between;margin:0 0 2px;font-size:11px;display:flex}.preset-detail-title{align-items:baseline;gap:8px;display:flex}.preset-detail-title b{font-size:16px}.preset-detail-title .icon{margin-left:auto}.preset-row{grid-template-columns:16px 90px 1fr;align-items:center;gap:6px;display:grid}.preset-row-icon{font-size:11px}.preset-row .swatch{vertical-align:-2px}.preset-variations{gap:6px;display:flex}.preset-variations img{background:var(--panel-2);border-radius:26px}.preset-url{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:6px;padding:6px 8px;display:flex}.preset-url .mono{word-break:break-all;flex:1;font-size:11px}.preset-card.focused{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.places{flex-direction:column;gap:2px;font-size:13px;display:flex}.places-label{color:#a1a1aa;align-items:center;gap:8px;margin:0;padding:0 8px 6px;font-size:12px;font-weight:400;display:flex}.places-label a{color:inherit}.places-label a:hover,.places-label a[aria-current=page]{color:var(--text)}.places-label a[aria-current=page]{font-weight:600}.places-list,.places-nested{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.places-nested{border-left:1px solid var(--line);margin:2px 0 4px 13px;padding-left:6px}.places-item{position:relative}.places-line{display:flex;position:relative}.places-row{min-width:0;min-height:30px;color:var(--text);white-space:nowrap;border-radius:5px;flex:1;align-items:center;gap:8px;padding:0 8px 0 26px;text-decoration:none;transition:background .15s;display:flex}.places-row:hover{background:#f7f7f8;text-decoration:none}.places-row.selected{background:#f0f0f2;font-weight:600}.places-row.bold{font-weight:600}button.places-row{font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;width:100%}.places-action{color:var(--muted)}.places-icon{color:var(--muted);flex-shrink:0}.places-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.places-line .places-name{padding-right:18px}.places-count{color:var(--muted);font-size:11.5px;font-weight:400}.places-version{color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:0 5px;font-size:10.5px;font-weight:600}.places-id{font-family:var(--mono);color:var(--muted);font-size:11px;font-weight:400}.places-thumb{background:#f0f0f2;border-radius:9px;flex-shrink:0;width:18px;height:18px;display:inline-block}.places-disclosure{z-index:1;width:20px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:none;place-items:center;padding:0;display:grid;position:absolute;top:0;left:4px}.places-disclosure:hover{color:var(--text);border:none}.places-disclosure svg{transition:transform .15s}.places-disclosure.open svg{transform:rotate(90deg)}.places-gap{height:6px}.places-note{padding:4px 8px 4px 26px}.places-menu{position:absolute;top:3px;right:2px}.places-menu-button{color:var(--muted);opacity:0;background:0 0;border:none;place-items:center;padding:3px 4px;display:grid}.places-line:hover .places-menu-button,.places-menu-button:focus-visible,.places-menu.open .places-menu-button{opacity:1}.places-menu-button:hover{color:var(--text);background:#e9e9ec;border:none}.places-menu-list{z-index:20;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:170px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 2px);right:0;box-shadow:0 6px 16px #0000001a}.places-menu-list a,.places-menu-list button{width:100%;font:inherit;text-align:left;cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:5px 8px;font-weight:400;display:flex}.places-menu-list a:hover,.places-menu-list button:hover{background:var(--accent-soft);text-decoration:none}.composition-head{align-items:center;gap:14px;margin:4px 0 14px;display:flex}.composition-head-art{background:var(--panel-2);border:1px solid var(--line);border-radius:28px;flex-shrink:0;width:56px;height:56px;overflow:hidden}.composition-head-art img,.composition-head-art span{width:100%;height:100%;display:block}.composition-head-text{gap:6px;min-width:0;display:grid}.composition-head-text h1{margin:0;font-size:22px;line-height:1.2}.composition-head-meta{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.composition-head .button{padding:6px 12px}.copy-id{color:var(--muted);background:0 0;border:none;border-radius:4px;align-items:center;gap:5px;padding:1px 4px;display:inline-flex}.copy-id .mono{font-size:11.5px}.copy-id:hover{color:var(--text);background:#f0f0f2;border:none}.page-tabs{border-bottom:1px solid var(--line);gap:2px;margin:4px 0 16px;display:flex}.page-tabs a,.page-tabs button{color:var(--muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:6px 12px}.page-tabs a:hover,.page-tabs button:hover{color:var(--text);text-decoration:none}.page-tabs a[aria-current=page],.page-tabs button.on{color:var(--text);border-color:var(--text);font-weight:600}.places-toggle{place-items:center;padding:3px 6px;display:grid}.places-toggle.on{background:#3f3f46}.places-drawer-backdrop{z-index:50;background:#18181b2e;position:fixed;inset:48px 0 0}.places-drawer{background:var(--panel);border-right:1px solid var(--line);width:284px;padding:16px 10px 16px 12px;position:absolute;top:0;bottom:0;left:0;overflow-y:auto;box-shadow:4px 0 16px #00000014}.used-in{flex-wrap:wrap;gap:4px;display:flex}.used-in-chip{background:var(--accent-soft);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:100%;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;overflow:hidden}.used-in-chip:hover{background:#dbe3ff;text-decoration:none}.used-in-filter select{margin-left:4px}.project-head{align-items:center;gap:14px;margin:6px 0 22px;display:flex}.project-tile{background:var(--accent);color:#fff;border-radius:10px;flex-shrink:0;place-items:center;width:44px;height:44px;font-size:18px;font-weight:700;display:grid}.project-head-text h1{margin:0;font-size:22px}.project-head-text p{margin:2px 0 0}.project-head .button,.project-head button{padding:6px 12px}.section-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.section-head h2{margin:0;font-size:14px}.section-head h2 .muted{margin-left:4px;font-weight:400}.view-switch{border:1px solid var(--line-strong);border-radius:var(--radius);display:inline-flex;overflow:hidden}.view-switch button{color:var(--muted);border:none;border-radius:0;padding:5px 8px}.view-switch button.on{color:var(--text);background:#f0f0f2}.ccard-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;display:grid}.ccard{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;transition:box-shadow .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.ccard:hover{border-color:var(--line-strong);box-shadow:0 4px 14px #0000000f}.ccard-art{background:var(--panel-2);border-bottom:1px solid var(--line);place-items:center;height:172px;display:grid;position:relative}.ccard-art img{border-radius:70px}.ccard-ph{background:var(--line);opacity:.5;border-radius:70px;width:140px;height:140px}.ccard-presets{align-items:center;display:flex;position:absolute;bottom:10px;left:10px}.ccard-preset{background:#f0f0f2;border:2px solid #fff;border-radius:14px;width:28px;height:28px;margin-right:-8px;display:inline-block}.ccard-presets-count{color:var(--muted);border:1px solid var(--line);background:#fff;border-radius:999px;margin-left:14px;padding:0 7px;font-size:11px}.ccard-menu{width:28px;height:28px;position:absolute;top:8px;right:8px}.ccard-menu .places-menu{top:0;right:0}.ccard-menu .places-menu-button,.crow .places-menu-button{opacity:1;border:1px solid var(--line);background:#ffffffe6;border-radius:6px;width:28px;height:28px}.ccard-body{flex:1;gap:7px;padding:12px 14px;display:grid}.ccard-title{align-items:baseline;gap:8px;min-width:0;display:flex}.ccard-title a{color:var(--text);font-size:15px}.ccard-pills{flex-wrap:wrap;gap:6px;display:flex}.cpill{color:#52525b;white-space:nowrap;background:#f0f0f2;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.cpill.ok{color:var(--ok);background:#ebfbee}.cpill.warn{color:var(--warn);background:#fff4e6}.ccard-facts{color:#52525b;flex-wrap:wrap;gap:4px 12px;font-size:12px;display:flex}.ccard-facts b{color:var(--text)}.ccard-links{border-top:1px solid var(--line);gap:6px;padding:8px 10px;display:flex}.ccard-links a{text-align:center;color:var(--text);border-radius:6px;flex:1;padding:5px;font-weight:500}.ccard-links a:hover{background:#f0f0f2;text-decoration:none}.ccard-links a.primary{background:var(--accent-soft);color:var(--accent)}.ccard-new{border:1.5px dashed var(--line-strong);min-height:300px;color:var(--text);font:inherit;background:#fff6;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.ccard-new:hover{border-color:var(--accent);background:#fff}.ccard-new-plus{border:1px solid var(--line);width:40px;height:40px;color:var(--accent);background:#fff;border-radius:20px;place-items:center;margin-bottom:6px;display:grid}.crow-list{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin:0;padding:0;list-style:none}.crow{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:8px 12px;display:flex}.crow:last-child{border-bottom:none}.crow-main{min-width:0;color:var(--text);flex:1;align-items:center;gap:10px;display:flex}.crow-main:hover{text-decoration:none}.crow-main img,.crow-ph{background:var(--panel-2);border-radius:20px;flex-shrink:0;width:40px;height:40px}.crow-name{flex-direction:column;min-width:0;display:flex}.crow .ccard-links{border:none;width:240px;padding:0}.crow .places-menu{position:relative;top:0;right:0}.project-empty{background:var(--panel);border:1px dashed var(--line-strong);text-align:center;border-radius:12px;padding:32px}.project-empty .button-row{justify-content:center}.project-panels{grid-template-columns:1fr 1fr;gap:14px;margin-top:22px;display:grid}.panel-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}.panel-card h3{text-transform:none;letter-spacing:0;color:var(--text);align-items:baseline;gap:6px;margin:0 0 10px;font-size:13px;display:flex}.panel-card h3 a{margin-left:auto;font-size:12px;font-weight:400}.piece-strip{align-items:center;gap:6px;margin-bottom:8px;display:flex}.piece-strip-item{border:1px solid var(--line);border-radius:8px;place-items:center;width:44px;height:44px;display:grid;overflow:hidden}.piece-strip-item img{object-fit:contain;width:100%;height:100%}.version-feed{color:#52525b;gap:6px;margin:0;padding:0;list-style:none;display:grid}.version-feed a{color:var(--text)}.new-composition{gap:14px;width:480px;display:grid}.new-composition .field small{color:var(--muted);font-size:11.5px}.size-choices{align-items:center;gap:6px;display:flex}.size-choices button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.size-choices input{width:90px}.json-drop{border:1.5px dashed var(--line-strong);text-align:center;color:var(--muted);cursor:pointer;border-radius:8px;padding:12px}.json-drop.over,.json-drop:hover{border-color:var(--accent);color:var(--accent)}@media (max-width:900px){.project-panels{grid-template-columns:1fr}}.id-line{margin:-6px 0 0}.id-line .link{padding:0}.piece-tags{flex-wrap:wrap;align-items:center;gap:4px;min-height:22px;display:flex}.piece-tag{color:#3f3f46;background:#f0f0f2;border-radius:4px;padding:0 6px;font-size:11px;line-height:18px}.piece-tags-edit{color:var(--muted);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:11px}.piece-tags-edit:hover{color:var(--accent);background:var(--accent-soft);border:none}.piece-card:not(:hover):not(:focus-within) .piece-tags .piece-tags-edit:has(svg){opacity:0}.topbar{z-index:30;background:var(--panel);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;height:48px;padding:0 16px;display:grid;position:sticky;top:0}.topbar-left{align-items:center;gap:10px;min-width:0;display:flex}.topbar-home:hover{text-decoration:none}.topbar-right{justify-content:flex-end;display:flex}.wordmark{color:var(--text);align-items:center;gap:8px;font-size:15px;font-weight:700;display:inline-flex}.source-badge{color:var(--ok);white-space:nowrap;background:#ebfbee;border:1px solid #b2f2bb;border-radius:999px;padding:1px 8px;font-size:10.5px;font-weight:600}.source-badge.local{border-color:var(--line-strong);color:var(--muted);background:#f4f4f5}.places-toggle{border:1px solid var(--line);color:var(--muted);background:0 0;place-items:center;padding:4px 6px;display:grid}.places-toggle.on{color:var(--text);background:#f0f0f2}.search-button{border:1px solid var(--line-strong);background:var(--panel-2);width:clamp(16rem,34vw,26rem);height:32px;color:var(--muted);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.search-button span{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.search-button:hover{border-color:var(--accent)}kbd{font:11px var(--font);border:1px solid var(--line-strong);color:var(--muted);background:var(--panel);border-radius:4px;padding:0 5px}.avatar{background:var(--accent);color:#fff;border-radius:12px;flex-shrink:0;place-items:center;width:24px;height:24px;font-size:10px;font-weight:700;display:inline-grid}.avatar.large{border-radius:18px;width:36px;height:36px;font-size:13px}.avatar.muted-avatar{background:#a1a1aa}.account{position:relative}.account-button{color:#52525b;max-width:14rem;height:32px;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:3px 10px 3px 3px;display:flex}.account-button:hover,.account-button.open{color:var(--text);background:#f0f0f2;border:none}.account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.account-skeleton{background:#f0f0f2;border-radius:999px;width:120px;height:28px}.account-menu{background:var(--panel);border:1px solid var(--line);z-index:40;border-radius:10px;width:290px;padding:6px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 30px #00000024}.account-menu>a,.account-menu>button{color:#3f3f46;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 8px;display:flex}.account-menu>a:hover,.account-menu>button:hover{background:#f0f0f2;border:none;text-decoration:none}.menu-hint{color:#a1a1aa;margin-left:auto;font-size:11.5px}.menu-sep{background:var(--line);height:1px;margin:5px 2px}.account-who{align-items:center;gap:10px;padding:8px;display:flex}.account-who b{text-overflow:ellipsis;font-weight:600;display:block;overflow:hidden}.account-who small{color:var(--muted)}.palette-backdrop{z-index:60;background:#18181b40;justify-content:center;padding-top:12vh;display:flex;position:fixed;inset:0}.palette{background:var(--panel);border-radius:12px;flex-direction:column;width:min(640px,100vw - 32px);max-height:70vh;display:flex;overflow:hidden;box-shadow:0 24px 60px #00000040}.palette-input{border-bottom:1px solid var(--line);color:var(--muted);align-items:center;gap:10px;padding:12px 14px;display:flex}.palette-input input{background:0 0;border:none;outline:none;flex:1;padding:0;font-size:15px}.palette-results{margin:0;padding:6px;list-style:none;overflow-y:auto}.palette-results li{cursor:pointer;color:var(--muted);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.palette-results li.active{background:var(--accent-soft);color:var(--accent)}.palette-label{color:var(--text);white-space:nowrap;font-weight:500}.palette-detail{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.palette-kind{color:#a1a1aa;font-size:11px}.palette-empty{text-align:center;padding:18px}.auth-page{background:var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:14px;gap:16px;width:min(400px,100%);padding:26px;display:grid}.auth-card h1{margin:0 0 4px;font-size:18px}.auth-card p{margin:0}.auth-mark{justify-self:center}.auth-mark:hover{text-decoration:none}.auth-form{text-align:left;gap:12px;display:grid}.auth-form input{width:100%}.auth-form .primary{justify-content:center;padding:8px}.org-head{align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.org-head h1{margin:0 0 2px}.org-head p{margin:0}.org-note{background:var(--panel);border:1px dashed var(--line-strong);color:var(--muted);border-radius:10px;padding:20px}.org-notice{color:var(--ok);background:#ebfbee;border:1px solid #b2f2bb;border-radius:8px;padding:8px 12px}.org-table{border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;width:100%;overflow:hidden}.org-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);background:var(--panel-2);padding:8px 12px;font-size:12px;font-weight:500}.org-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 12px}.org-table tr:last-child td{border-bottom:none}.org-table tr.revoked td{opacity:.55}.org-row-actions{text-align:right;white-space:nowrap}.org-row-actions button{margin-left:4px}.person{align-items:center;gap:10px;display:flex}.person small{color:var(--muted);display:block}.role-select{padding:3px 6px}.cpill.bad{color:var(--danger);background:#fff5f5}.cpill.muted{color:#52525b;background:#f0f0f2}.org-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:10px;margin-bottom:14px;padding:16px;display:grid}.org-card h2{align-items:center;gap:8px;margin:0;font-size:14px;display:flex}.org-card p{margin:0}.key-form{grid-template-columns:1fr 1fr 1fr auto;align-items:end}.secret-card{background:#fff9db;border-color:#ffe066}.secret-row{align-items:center;gap:8px;display:flex}.secret-row code{background:var(--panel);border:1px solid var(--line);word-break:break-all;border-radius:6px;flex:1;padding:6px 8px}.invite-dialog{gap:14px;width:540px;display:grid}.invite-dialog .field small{color:var(--muted)}.chip-input{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);cursor:text;flex-wrap:wrap;align-items:center;gap:4px;min-height:36px;padding:4px 6px;display:flex}.chip-input input{border:none;outline:none;flex:1;min-width:140px;padding:2px}.chip-pill{background:#f0f0f2;border-radius:999px;align-items:center;gap:2px;padding:1px 4px 1px 9px;font-size:12px;display:inline-flex}.chip-pill.invalid{color:var(--danger);background:#fff5f5}.chip-pill button{color:inherit;background:0 0;border:none;padding:0 4px}.role-choices{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.role-choices button{text-align:left;border-radius:8px;gap:2px;padding:8px 10px;display:grid}.role-choices button small{color:var(--muted);white-space:normal;font-size:11.5px}.role-choices button.on{border-color:var(--accent);background:var(--accent-soft)}.project-picks{flex-wrap:wrap;gap:4px 14px;display:flex}.via{color:var(--muted);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;margin:0;padding:7px 9px;font-size:12px}.via.warn{color:#a15c00;background:#fff4e6;border-color:#ffd8a8}.dialog-actions .grow{flex:1}.places-org{border-top:1px solid var(--line);margin-top:16px;padding-top:10px}.places-org-head{align-items:center;gap:10px;padding:4px 8px;display:flex}.places-org-head b{font-size:13px;display:block}.places-org-head small{color:var(--muted)}.places-org-tile{border:1px solid var(--line);border-radius:7px;place-items:center;width:28px;height:28px;font-size:11px;font-weight:700;display:grid}.page-tabs button{font:inherit;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0}.page-tabs button.on{border-bottom-color:var(--text)}
