:root{--bg: #12100e;--panel: #1a1714;--panel-2: #211d19;--edge: #332c25;--ink: #e8e0d4;--ink-dim: #9c9186;--accent: #d9a441;--say: #a8c98a;--emote: #c9a2d4;--move: #7fa8c9;--font: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.55}.app{display:grid;height:100dvh;grid-template-columns:230px minmax(0,1fr) 260px;grid-template-rows:100%;gap:10px;padding:10px;height:100%}.col-right{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-height:0}.col-left{display:grid;grid-template-rows:auto minmax(0,1fr) minmax(0,1fr);gap:10px;min-height:0}.col-center{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:10px;min-height:0}.panel{background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:12px 14px;min-height:0;overflow:hidden}.panel h2{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin:0 0 10px;font-weight:600}.panel h3{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin:14px 0 4px;font-weight:600}.muted{color:var(--ink-dim)}.panel-feed{padding:0}.feed-scroll{height:100%;overflow-y:auto;padding:16px 20px}.line{margin:0 0 6px;white-space:pre-wrap}.line-echo{color:var(--ink-dim);margin-top:12px}.line-say{color:var(--say)}.line-say .quote{color:var(--ink)}.line-emote{color:var(--emote)}.line-move{color:var(--move)}.line-system{color:var(--ink)}.panel-input{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--panel-2)}.panel-input .prompt{color:var(--accent)}.panel-input input{flex:1;background:transparent;border:none;outline:none;color:var(--ink);font-family:inherit;font-size:14px}.panel-input input::placeholder{color:#5f564c}.brand{font-size:15px;letter-spacing:.1em;margin:0 0 8px;color:var(--accent)}.you{margin:0;font-weight:600}.menu-links{display:flex;flex-direction:column;gap:4px;margin-top:14px}.menu-links button{background:transparent;border:1px solid var(--edge);border-radius:5px;color:var(--ink-dim);font-family:inherit;font-size:12px;padding:5px 8px;text-align:left;cursor:not-allowed}.panel-here{overflow-y:auto}.room-name{margin:0;color:var(--accent)}.people,.exits{list-style:none;margin:0;padding:0}.exits{display:flex;flex-wrap:wrap;gap:6px}.exits li{border:1px solid var(--edge);border-radius:4px;padding:1px 6px;font-size:12px}.map-wrap{overflow:auto}.map-room{fill:var(--panel-2);stroke:var(--edge);stroke-width:1}.map-room.here{fill:var(--accent);stroke:var(--accent)}.map-link{stroke:var(--edge);stroke-width:2;stroke-linecap:round}.map-you{fill:#1a1714}.map-stair{fill:var(--accent)}.map-stair.on-here{fill:#1a1714}.map-floor{margin:0 0 8px;font-size:11px;color:var(--ink)}.map-legend{margin:10px 0 0;font-size:11px;color:var(--ink-dim)}.map-key-you{color:var(--accent)}.map-key-stair{color:var(--accent);letter-spacing:-1px}.panel-scratch{overflow-y:auto}.gate{display:grid;place-items:center;height:100%}.gate-card{background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:28px 32px;width:320px;display:flex;flex-direction:column;gap:10px}.gate-card h1{margin:0;color:var(--accent);letter-spacing:.1em}.gate-card p{margin:0}.gate-card input{background:var(--panel-2);border:1px solid var(--edge);border-radius:5px;padding:9px 11px;color:var(--ink);font-family:inherit;font-size:14px;outline:none}.gate-card input:focus{border-color:var(--accent)}.gate-card button{background:var(--accent);border:none;border-radius:5px;padding:9px;font-family:inherit;font-size:14px;font-weight:600;color:#1a1714;cursor:pointer}.panel-roster{overflow-y:auto}.roster{list-style:none;margin:0;padding:0}.roster li{display:flex;align-items:center;gap:7px;padding:1px 0}.roster .dot{width:6px;height:6px;border-radius:50%;background:var(--say);flex:none}.roster li.off{color:var(--ink-dim)}.roster li.off .dot{background:var(--edge)}.load-older{display:block;margin:0 auto 14px;background:transparent;border:1px solid var(--edge);border-radius:5px;color:var(--ink-dim);font-family:inherit;font-size:11px;padding:3px 12px;cursor:pointer}.load-older:hover{color:var(--ink);border-color:var(--ink-dim)}.panel-inventory{overflow-y:auto}.items{list-style:none;margin:0;padding:0}.items li{margin-bottom:2px}.item-name{background:transparent;border:none;padding:0;color:var(--ink);font-family:inherit;font-size:13px;text-align:left;cursor:pointer}.item-name:hover{color:var(--accent)}.yours{color:var(--accent);margin-left:3px}.item-desc{margin:2px 0 8px 10px;padding-left:8px;border-left:1px solid var(--edge);color:var(--ink-dim);font-size:12px}.panel-inventory code{background:var(--panel-2);border-radius:3px;padding:0 3px;font-size:12px}.col-center.building{grid-template-rows:auto minmax(0,1fr) auto}.panel-build{background:var(--panel-2)}.build-head{display:flex;align-items:baseline;justify-content:space-between}.build-close,.build-dig button{background:transparent;border:1px solid var(--edge);border-radius:4px;color:var(--ink-dim);font-family:inherit;font-size:11px;padding:2px 8px;cursor:pointer}.build-close:hover,.build-dig button:hover:not(:disabled){color:var(--ink);border-color:var(--ink-dim)}.build-label{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:8px}.build-label input,.build-label textarea{display:block;width:100%;margin-top:3px;background:var(--panel);border:1px solid var(--edge);border-radius:5px;padding:6px 9px;color:var(--ink);font-family:inherit;font-size:13px;letter-spacing:normal;text-transform:none;outline:none;resize:vertical}.build-label input:focus,.build-label textarea:focus{border-color:var(--accent)}.build-row{display:flex;gap:8px;margin-bottom:10px}.build-save{background:var(--accent);border:none;border-radius:5px;padding:5px 14px;font-family:inherit;font-size:12px;font-weight:600;color:#1a1714;cursor:pointer}.build-save:disabled{background:var(--edge);color:var(--ink-dim);cursor:default}.build-dig{display:flex;align-items:center;gap:6px;padding-top:10px;border-top:1px solid var(--edge);flex-wrap:wrap}.build-label-inline{font-size:12px;color:var(--ink-dim)}.build-dig select,.build-dig input{background:var(--panel);border:1px solid var(--edge);border-radius:4px;padding:3px 7px;color:var(--ink);font-family:inherit;font-size:12px;outline:none}.build-dig input{flex:1;min-width:120px}.menu-links button.active{color:var(--accent);border-color:var(--accent)}.menu-links button:not(:disabled){cursor:pointer;color:var(--ink)}.tabbar{display:none}@media(max-width:1000px){.app{grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"head" "tabs" "main" "input";gap:8px;padding:8px;padding-top:max(8px,env(safe-area-inset-top));padding-bottom:max(8px,env(safe-area-inset-bottom))}.col-left,.col-right,.col-center{display:contents}.panel-menu{grid-area:head}.panel-feed{grid-area:main}.panel-input{grid-area:input}.panel-menu{display:flex;align-items:baseline;gap:10px;padding:8px 12px}.brand{margin:0;font-size:13px}.panel-menu .you{font-size:13px}.panel-menu .muted{margin:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-links{margin:0 0 0 auto;flex-direction:row}.menu-links button{font-size:12px;padding:4px 10px}.tabbar{grid-area:tabs;display:flex;gap:6px}.tabbar button{flex:1;background:var(--panel);border:1px solid var(--edge);border-radius:6px;color:var(--ink-dim);font-family:inherit;font-size:12px;padding:9px 4px;cursor:pointer}.tabbar button.active{color:var(--accent);border-color:var(--accent);background:var(--panel-2)}.panel-here,.panel-inventory,.panel-map,.panel-roster,.panel-build{grid-area:main;display:none;overflow-y:auto}.app[data-panel=here] .panel-here,.app[data-panel=carrying] .panel-inventory,.app[data-panel=map] .panel-map,.app[data-panel=who] .panel-roster{display:block}.app:not([data-panel=none]) .panel-feed,.app:has(.panel-build) .panel-feed{display:none}.app:has(.panel-build) .panel-build{display:block}.feed-scroll{padding:12px 14px}.panel-input input,.gate-card input,.build-label input,.build-label textarea,.build-dig input,.build-dig select{font-size:16px}.panel-input{padding:8px 12px}.exits li button{padding:6px 12px;font-size:13px}.item-name{padding:5px 0;font-size:14px}.roster li{padding:4px 0}}.exits li button{background:transparent;border:none;padding:1px 6px;color:var(--ink);font-family:inherit;font-size:12px;cursor:pointer}.exits li{padding:0}.exits li:hover{border-color:var(--accent)}.exits li:hover button{color:var(--accent)}@media(min-width:1001px)and (max-width:1240px){.app{grid-template-columns:190px minmax(0,1fr) 210px}}.gate-error{margin:0;color:#e0806f;font-size:12px}.gate-switch{background:transparent!important;border:none!important;color:var(--ink-dim)!important;font-weight:400!important;font-size:12px!important;padding:2px!important;cursor:pointer}.gate-switch:hover{color:var(--ink)!important}.admin{max-width:1100px;margin:0 auto;padding:20px;height:100dvh;overflow-y:auto}.admin-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:18px}.admin-head h1{font-size:18px;margin:0;color:var(--accent)}.admin-tag{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin-left:6px}.admin button{background:transparent;border:1px solid var(--edge);border-radius:5px;color:var(--ink-dim);font-family:inherit;font-size:12px;padding:4px 10px;cursor:pointer}.admin button:hover{color:var(--ink);border-color:var(--ink-dim)}.admin .link-danger{border-color:transparent;color:#c07767}.admin .link-danger:hover{color:#e0806f;border-color:#6b4038}.admin-counts{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}.stat{background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:10px 16px;min-width:92px}.stat-value{font-size:20px;color:var(--accent)}.stat-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim)}.admin-cols{display:grid;grid-template-columns:1fr 340px;gap:14px}.admin-card{background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:14px 16px;margin-bottom:14px}.admin-card h2{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin:0 0 10px}.admin-row{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.admin-row input{background:var(--panel-2);border:1px solid var(--edge);border-radius:5px;padding:5px 9px;color:var(--ink);font-family:inherit;font-size:13px;outline:none}.admin-row input[type=number]{width:60px}.admin-row input:not([type=number]){flex:1;min-width:140px}.code-list{list-style:none;margin:0;padding:0}.code-list li{display:flex;align-items:center;gap:8px;padding:3px 0}.code-list code{background:var(--panel-2);border-radius:4px;padding:2px 8px;color:var(--accent);letter-spacing:.1em;cursor:pointer}.copied{font-size:11px;color:var(--say)}.admin-table{width:100%;border-collapse:collapse}.admin-table td{padding:7px 0;border-bottom:1px solid var(--edge);vertical-align:top}.admin-table .muted{font-size:11px}.admin-actions{text-align:right;white-space:nowrap}.admin-actions button{margin-left:4px}.badge{background:var(--accent);color:#1a1714;border-radius:3px;font-size:10px;padding:1px 6px;letter-spacing:.08em;text-transform:uppercase}.admin-message{background:var(--panel-2);border-left:2px solid var(--accent);padding:6px 10px;margin:0 0 10px;font-size:12px}.admin-details summary{cursor:pointer;font-size:12px;color:var(--ink-dim);margin-top:8px}.admin-activity{max-height:70vh;overflow-y:auto}.activity{list-style:none;margin:0;padding:0;font-size:12px}.activity li{padding:5px 0;border-bottom:1px solid var(--edge)}.activity .muted{font-size:10px}@media(max-width:1000px){.admin-cols{grid-template-columns:1fr}.admin{padding:12px}.admin-row input,.admin button{font-size:16px}}
