:root{--ground:#1b1917;--felt:#211e1b;--panel:#262320;--line:#3a3530;--ink:#ece6da;--muted:#a89f91;--signal:#9bd36a;--on-signal:#1b1917;--danger:#ff8a6b;--display:"Bricolage Grotesque",system-ui,sans-serif;--title:"Fraunces",Georgia,serif;--mono:"IBM Plex Mono",ui-monospace,monospace;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--ground);color:var(--ink);font-family:var(--display);min-height:100%;margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--signal);outline-offset:3px}a{color:inherit}button,.button-link,select{border:1px solid var(--line);cursor:pointer;text-decoration:none;display:inline-block;background:0 0;border-radius:6px;padding:6px 12px;font-size:14px}button:hover:not(:disabled),select:hover{border-color:var(--muted)}button:disabled{opacity:.4;cursor:default}button[aria-pressed=true]{background:var(--ink);color:var(--ground);border-color:var(--ink)}button.primary{background:var(--signal);color:var(--on-signal);border-color:var(--signal);font-weight:600}button.danger{color:var(--danger)}button.link{text-decoration:underline;color:var(--ink);border:0;padding:0 0 0 8px}select{background:var(--ground)}.group{display:inline-flex;flex-wrap:wrap;align-items: center;gap:6px}.muted{color:var(--muted)}.status{color:var(--muted);font:14px var(--mono);padding:24px}.num{font:500 12px var(--mono);color:var(--signal)}.masthead{display:flex;flex-wrap:wrap;align-items:baseline;gap:24px;padding:16px 24px}.brand{font:600 22px var(--title);letter-spacing:-.01em;text-decoration:none}.masthead nav{display:flex;font:13px var(--mono);gap:16px}.masthead nav a{color:var(--muted);text-decoration:none}.masthead nav a:hover,.masthead nav a[aria-current=page]{color:var(--ink)}.editor{padding:0 24px 48px}.editor-bar{position:sticky;z-index:30;display:flex;background:var(--ground);flex-wrap:wrap;align-items: center;gap:12px;padding:10px 0;top:0}.page-title{font:600 26px var(--title);letter-spacing:-.01em;background:0 0;border:1px solid #0000;border-radius:6px;flex:1;min-width:160px;max-width:520px;margin-left:-8px;padding:4px 8px}.page-title:hover{border-color:var(--line)}.page-title:focus{border-color:var(--muted);outline:none}.save-status{font:12px var(--mono);color:var(--muted)}.save-status[data-error]{color:var(--danger)}.editor-bar>.group{margin-left:auto}.toolbar{position:sticky;z-index:29;display:flex;border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-wrap:wrap;align-items: center;gap:10px;min-height:46px;margin-bottom:12px;padding:6px 12px;font-size:14px;top:58px}.toolbar .muted{font:13px var(--mono)}.toolbar-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-weight:600}.tabs button{text-transform:capitalize;border-radius:999px}.swatches{gap:4px}.swatch{border:2px solid var(--line);border-radius:50%;width:22px;height:22px;padding:0}.swatch[aria-pressed=true]{border-color:var(--ink);box-shadow:0 0 0 2px var(--panel)inset}.rotate{display:inline-flex;font:12px var(--mono);color:var(--muted);align-items: center;gap:8px}.rotate span{min-width:64px}.rotate input{accent-color:var(--signal);width:140px}.size>span{font:12px var(--mono);color:var(--muted);text-align:right;min-width:40px}.notice{background:var(--panel);color:var(--muted);font:13px var(--mono);border-radius:8px;margin:0 0 12px;padding:8px 12px}.editor-body{display:grid;grid-template-columns:minmax(0,1fr);align-items: start;gap:20px}.editor[data-editing] .editor-body{grid-template-columns:minmax(0,1fr)248px}.page-column{min-width:0}.canvas-frame{position:relative;width:100%;max-width:1600px;margin:0 auto}.canvas{position:absolute;transform-origin:0 0;top:0;left:0}.canvas[data-editing]{background:var(--felt);box-shadow:0 0 0 1px var(--line);background-image:radial-gradient(circle,#ffffff0d 1px,#0000 1px);background-size:40px 40px;border-radius:4px}.el{position:absolute;translate:-50% -50%}.el:focus-visible{outline:none}.piece{filter:drop-shadow(0 4px 6px #0000008c)}.piece[data-clickable]{cursor:zoom-in}.piece img{display:block;object-fit:contain;pointer-events:none;user-select:none;width:100%;height:100%}.canvas:not([data-editing]) .piece[data-clickable]:hover{transition:scale .15s;scale:1.03}.canvas[data-editing] .el{cursor:grab;touch-action:none}.canvas[data-editing] .el:active{cursor:grabbing}.el[data-selected]{outline:2px dashed var(--signal);outline-offset:4px}.piece[data-selected]{filter:drop-shadow(0 8px 14px #0009)}.canvas:not([data-editing]) .text{pointer-events:none}.text p{white-space:pre-wrap;overflow-wrap:break-word;min-height:1.3em;margin:0;line-height:1.3}.text .placeholder{opacity:.4;font-style:italic}.text textarea{display:block;outline:none;resize:none;overflow:hidden;cursor:text;background:#ffffff0a;border:0;width:100%;margin:0;padding:0;line-height:1.3}.handle{--k:calc(1/var(--canvas-scale,1));position:absolute;width:calc(14px*var(--k));height:calc(14px*var(--k));touch-action:none;border:calc(2px*var(--k))solid var(--ground);background:var(--signal);box-shadow:0 0 0 calc(1px*var(--k))var(--signal);border-radius:50%}.handle-rotate{top:calc(-34px*var(--k));cursor:grab;left:50%;translate:-50%}.handle-rotate:after{content:"";position:absolute;width:calc(2px*var(--k));height:calc(18px*var(--k));background:var(--signal);top:100%;left:50%;translate:-50%}.handle-resize{right:calc(-12px*var(--k));bottom:calc(-12px*var(--k));cursor:nwse-resize;border-radius:3px}.handle-width{top:50%;right:calc(-14px*var(--k));width:calc(8px*var(--k));height:calc(26px*var(--k));cursor:ew-resize;border-radius:4px;translate:0 -50%}.room{display:flex;flex-wrap:wrap;align-items: center;gap:8px;margin-top:14px}.room .muted{font:12px var(--mono)}.drawer{position:sticky;display:flex;border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-direction:column;gap:10px;max-height:calc(100vh - 140px);padding:12px;top:120px}.drawer-head{display:flex;justify-content:space-between;align-items: center}.drawer-head h2{font:500 13px var(--mono);margin:0}.drawer-toggle{color:var(--muted);font:12px var(--mono);border:0;padding:2px 4px}.drawer-note{color:var(--muted);font:12px var(--mono);margin:0}.add-text{width:100%}.drawer-list{list-style:none;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:8px;margin:0;padding:0}.drawer-piece{display:grid;background:var(--ground);cursor:grab;touch-action:none;place-items: center;width:100%;height:76px;padding:6px}.drawer-piece img{pointer-events:none;user-select:none;max-width:100%;max-height:100%}.drag-ghost{position:fixed;z-index:2000;pointer-events:none;opacity:.45;filter:drop-shadow(0 8px 14px #0009);translate:-50% -50%}.drag-ghost[data-over]{opacity:.9}.detail{position:fixed;z-index:1000;overflow-y:auto;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;gap:12px;width:min(440px,100%);padding:20px 24px 32px;top:0;bottom:0;right:0}.detail-head{display:flex;justify-content:space-between;align-items: start;gap:12px}.detail h2{font:500 24px var(--title);text-wrap:balance;margin:0}.detail .muted{font:13px var(--mono);margin:0}.big{object-fit:contain;width:100%;max-height:60vh}.publish{position:relative}.publish>button[data-public]:before{content:"● ";color:var(--signal)}.publish>button[data-public=outdated]:before{color:#f2c94c}.publish-panel{position:absolute;z-index:50;display:flex;border:1px solid var(--line);background:var(--panel);border-radius:10px;flex-direction:column;gap:10px;width:min(380px,100vw - 24px);padding:14px;font-size:14px;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #00000080}.publish-panel form{display:flex;flex-direction:column;align-items: start;gap:8px}.publish-panel p{margin:0;line-height:1.45}.publish-panel label{font:12px var(--mono);color:var(--muted)}.publish-panel a{color:var(--signal);word-break:break-all}.slug-field{display:flex;border:1px solid var(--line);background:var(--ground);font:13px var(--mono);border-radius:6px;align-items: center;width:100%}.slug-field span{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:8px}.slug-field input{font:inherit;outline:none;background:0 0;border:0;flex:1;min-width:60px;padding:7px 8px 7px 0}.publish-error{color:var(--danger)}.admin{max-width:960px;padding:8px 24px 48px}.admin h1{font:600 26px var(--title);margin:8px 0 12px}.admin h2{font:600 18px var(--title);margin:28px 0 12px}.admin>p{max-width:640px;line-height:1.5}.invite-form{display:flex;gap:8px;margin:16px 0}.invite-form input{border:1px solid var(--line);background:var(--ground);border-radius:6px;flex:1;max-width:320px;padding:8px 10px}.invite-link{display:flex;background:var(--panel);border-radius:10px;flex-direction:column;align-items: start;gap:8px;padding:14px}.invite-link code{font:13px var(--mono);word-break:break-all}.invite-link p{margin:0;font-size:14px}.people{list-style:none;display:flex;flex-direction:column;margin:0;padding:0}.people li{display:flex;border-bottom:1px solid var(--line);flex-wrap:wrap;align-items: center;gap:12px;padding:10px 0}.people .muted{font:13px var(--mono)}.people .group{margin-left:auto}.library-tools{display:flex;font:13px var(--mono);align-items: center;gap:8px;margin:16px 0}.library-tools span{margin-right:8px}.library-grid{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:0;padding:0}.library-grid label{position:relative;display:flex;border:1px solid var(--line);cursor:pointer;opacity:.55;border-radius:8px;flex-direction:column;gap:4px;height:100%;padding:10px}.library-grid label[data-offered]{opacity:1;border-color:var(--signal)}.library-grid input{position:absolute;accent-color:var(--signal);top:8px;left:8px}.library-grid img{object-fit:contain;height:110px}.library-grid .title{font-size:13px}@media (max-width:960px){.masthead{gap:12px;padding:12px}.editor{padding:0 12px 48px}.page-title{font-size:20px}.toolbar{top:54px}.editor[data-editing] .editor-body{grid-template-columns:minmax(0,1fr)}.drawer{position:fixed;z-index:35;max-height:40vh;inset:auto 12px 12px}.drawer[data-collapsed]{left:auto}.admin{padding:8px 12px 48px}}.public-page{padding:20px 24px 48px}.public-message{max-width:520px;margin:18vh auto 0;padding:0 24px}.public-message h1{font:600 26px var(--title);margin:0 0 8px}.public-message p{color:var(--muted);line-height:1.5}@media (max-width:640px){.public-page{padding:14px 12px 40px}}
