@font-face{font-family:"Fraunces";src:url("../fonts/fraunces/fraunces-latin-500-normal.woff2") format("woff2");font-weight:500;font-display:swap}
:root{--bg:#050506;--fg:#efefef;--mut:#8d8d94;--line:#1f1f24;--card:#0c0c0f;--acc:#d9d4c7;--st:#e8e8e8;--ap:#f0c674;--in:#9f8cff;--panel:380px;--display:"Fraunces",Georgia,serif}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--fg);font:14px/1.5 Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
kbd{font:11px/1 ui-monospace,Menlo,monospace;border:1px solid #33333a;border-bottom-width:2px;border-radius:4px;padding:2px 4px;color:#bdbdc4;background:#111114}
.sm-skip{position:absolute;left:-999px}.sm-skip:focus{left:12px;top:12px;z-index:99;background:#fff;color:#000;padding:6px 10px;border-radius:6px}
.sm-top{height:52px;display:flex;align-items:center;gap:18px;padding:0 18px;border-bottom:1px solid var(--line);background:rgba(0,0,0,.8);position:relative;z-index:5}
.sm-logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--fg);font-weight:600;letter-spacing:.38em;font-size:13px;white-space:nowrap}
.sm-title{display:flex;align-items:center;gap:10px;min-width:0}
.sm-title h1{font:500 17px/1.2 var(--display);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm-badge{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ap);border:1px solid #4a3f22;border-radius:99px;padding:2px 8px}
.sm-main{display:grid;grid-template-columns:minmax(0,1fr) var(--panel);height:calc(100vh - 52px);height:calc(100dvh - 52px)}
.sm-stage{position:relative;overflow:hidden;background:radial-gradient(120% 90% at 50% 38%,#1b1c20 0%,#0b0b0d 55%,#030304 100%)}
#sm-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;outline:none}
#sm-canvas:focus-visible{box-shadow:inset 0 0 0 2px #d9d4c7}
.sm-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.sm-frame{position:absolute;left:22px;top:18px;pointer-events:none;max-width:60%}
.sm-kicker{text-shadow:0 1px 3px #000;margin:0;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mut)}
.sm-viewname{text-shadow:0 1px 4px #000;margin:4px 0 0;font:500 26px/1.1 var(--display);color:var(--fg)}
.sm-hud{position:absolute;left:22px;bottom:18px;max-width:min(520px,70%);font-size:12.5px;color:#c9c9cf;pointer-events:none;text-shadow:0 1px 2px #000}
.sm-hud b{color:var(--fg);font-weight:600}
.sm-coord{position:absolute;right:16px;top:14px;font:12px/1.45 ui-monospace,Menlo,monospace;color:#cfcfd6;background:rgba(8,8,10,.72);border:1px solid var(--line);border-radius:8px;padding:6px 9px;pointer-events:none;white-space:pre;display:none}
.sm-legend{position:absolute;right:16px;bottom:16px;display:flex;flex-direction:column;gap:4px;font-size:12px;color:#d4d4da;background:rgba(8,8,10,.78);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.sm-legend i{display:inline-block;width:18px;height:10px;border-radius:2px;margin-right:8px;vertical-align:-1px}
.lg-s{background:#b9bcc0}.lg-a{background:#d9a441}.lg-i{background:repeating-linear-gradient(135deg,#8f7cf0 0 3px,#3a2f78 3px 6px);outline:1px dashed #b7a8ff}
.sm-load,.sm-lost{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--mut);background:rgba(5,5,6,.6)}
.sm-load[hidden],.sm-lost[hidden],.sm-legend[hidden]{display:none!important}
.sm-spin{width:28px;height:28px;border-radius:50%;border:2px solid #2a2a30;border-top-color:#d9d4c7;animation:smspin 1s linear infinite}
@keyframes smspin{to{transform:rotate(360deg)}}
.sm-lost button,.sm-row button,.sm-views button,.sm-tools button{background:#121216;border:1px solid #2a2a31;border-radius:8px;padding:7px 11px;cursor:pointer;color:var(--fg)}
.sm-row button:hover,.sm-views button:hover,.sm-tools button:hover{border-color:#4a4a54}
.sm-views button[aria-pressed=true],.sm-tools button[aria-pressed=true]{background:#e9e5da;color:#0b0b0d;border-color:#e9e5da}
.sm-views button[aria-pressed=true] kbd,.sm-tools button[aria-pressed=true] kbd{background:#d6d1c4;color:#222;border-color:#b5b0a3}
.sm-views,.sm-tools{display:flex;flex-wrap:wrap;gap:6px}
.sm-views kbd,.sm-tools kbd{margin-right:6px}
.sm-walkpad{position:absolute;right:18px;bottom:110px;display:grid;grid-template-columns:44px 44px 44px;grid-template-rows:44px 44px;gap:6px}
.sm-walkpad[hidden]{display:none}
.sm-walkpad button{background:rgba(18,18,22,.82);border:1px solid #33333b;border-radius:10px;color:#ddd;font-size:15px;touch-action:none;cursor:pointer}
.sm-walkpad [data-walk=f]{grid-column:2;grid-row:1}.sm-walkpad [data-walk=l]{grid-column:1;grid-row:2}.sm-walkpad [data-walk=b]{grid-column:2;grid-row:2}.sm-walkpad [data-walk=r]{grid-column:3;grid-row:2}
.sm-panel{border-left:1px solid var(--line);background:#08080a;overflow:auto;position:relative}
.sm-grip{display:none}
.sm-panel-body{padding:14px 16px 28px}
.sm-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin:0 -16px 14px;padding:0 10px;position:sticky;top:-14px;background:#08080a;z-index:2}
.sm-tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:11px 8px 9px;color:var(--mut);cursor:pointer;font-size:13px}
.sm-tabs button[aria-selected=true]{color:var(--fg);border-bottom-color:var(--acc)}
.sm-tg{border:1px solid var(--line);border-radius:10px;margin:14px 0 0;padding:8px 12px 10px}
.sm-tg legend{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);padding:0 6px}
.sm-tg label{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer}
.sm-tg label kbd{margin-left:auto}
input[type=checkbox],input[type=radio]{accent-color:#d9d4c7;width:16px;height:16px}
.sm-note{color:var(--mut);font-size:12.5px;margin:10px 0 0}
.sm-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.sm-mlist{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}
.sm-mlist li{border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px;background:var(--card)}
.sm-mlist li small{display:block;color:var(--mut);font-size:11.5px}
.sm-spec-row{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 11px;margin:0 0 7px;cursor:pointer}
.sm-spec-row:hover{border-color:#3a3a42}
.sm-spec-row b{font-weight:600;font-size:13.5px}
.sm-spec-row .v{display:block;color:#d6d6dc;font-size:13px;margin-top:2px}
.sm-tag{display:inline-block;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;border-radius:99px;padding:1px 7px;margin-left:6px;vertical-align:1px;border:1px solid}
.t-STATED{color:#e6e6e6;border-color:#55555d}.t-APPROXIMATE{color:#f0c674;border-color:#6b5524}.t-INFERRED{color:#b7a8ff;border-color:#4b3f8f;border-style:dashed}
.sm-card{position:sticky;bottom:0;margin:16px -16px -28px;padding:14px 16px 18px;background:#0e0e12;border-top:1px solid #2a2a31;box-shadow:0 -12px 30px rgba(0,0,0,.6)}
.sm-card h3{margin:0 0 4px;font:500 18px/1.2 var(--display)}
.sm-card .val{font-size:14px;color:#e8e8ec}
.sm-card blockquote{margin:10px 0;padding:0 0 0 12px;border-left:2px solid #3a3a42;color:#cfcfd5;font-style:italic}
.sm-card .src{font-size:12px;color:var(--mut)}
.sm-card .ass{font-size:12.5px;color:#c3b8ff;margin-top:8px}
.sm-card .x{position:absolute;right:10px;top:8px;background:none;border:0;color:var(--mut);font-size:18px;cursor:pointer}
.sm-about h2{font:500 21px/1.2 var(--display);margin:4px 0 10px}
.sm-about h3{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);margin:18px 0 6px}
.sm-about p{color:#d2d2d8;margin:0 0 10px}
.sm-keys{line-height:2.1}
/* in-scene labels */
.hs{position:absolute;left:0;top:0;pointer-events:auto;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;border:1px solid rgba(255,255,255,.75);background:rgba(10,10,12,.72);color:#fff;font:600 11px/22px Inter,sans-serif;text-align:center;cursor:pointer;padding:0;backdrop-filter:blur(4px)}
.hs.APPROXIMATE{border-color:#f0c674;color:#f0c674}.hs.INFERRED{border-color:#b7a8ff;color:#b7a8ff;border-style:dashed}
.hs:hover,.hs:focus-visible{background:#e9e5da;color:#000;outline:none}
.dl{position:absolute;left:0;top:0;transform:translate(-50%,-50%);font-size:11.5px;color:#f2f2f2;background:rgba(8,8,10,.78);border:1px solid #2c2c33;border-radius:6px;padding:2px 7px;white-space:nowrap;pointer-events:none}
.dl .sm-tag{margin-left:5px}
.ml{position:absolute;left:0;top:0;transform:translate(-50%,-140%);font:12px/1.3 ui-monospace,Menlo,monospace;color:#0b0b0d;background:#f0c674;border-radius:5px;padding:2px 6px;white-space:nowrap;pointer-events:none}
.ml.ang{background:#7fd1c7}
.sn{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:18px;height:18px;border-radius:50%;border:2px solid #f0c674;pointer-events:none;display:none}
.sn.v{border-radius:3px;border-color:#7fd1c7}.sn.e{border-color:#ffd9a0;border-style:dotted}
.sm-nos{padding:20px}
@media (max-width:860px){
  :root{--panel:0px}
  .sm-top{height:48px;padding:0 12px;gap:10px}.sm-logo span{display:none}.sm-title h1{font-size:15px}
  .sm-main{display:block;height:calc(100dvh - 48px);position:relative}
  .sm-stage{position:absolute;inset:0}
  .sm-panel{position:absolute;left:0;right:0;bottom:0;max-height:62%;border-left:0;border-top:1px solid #2a2a31;border-radius:16px 16px 0 0;background:rgba(8,8,10,.96);transition:transform .25s ease;z-index:4;padding-bottom:env(safe-area-inset-bottom)}
  .sm-panel.min{transform:translateY(calc(100% - 46px))}
  .sm-grip{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:46px;background:none;border:0;color:var(--fg);cursor:pointer;position:sticky;top:0;z-index:3;background:rgba(8,8,10,.98)}
  .sm-grip span{width:36px;height:4px;border-radius:2px;background:#3a3a42}
  .sm-grip b{font-weight:500;font-size:13px;color:var(--mut)}
  .sm-panel-body{padding-top:0}.sm-tabs{top:46px}
  .sm-frame{left:14px;top:10px;max-width:72%}.sm-viewname{font-size:20px}
  .sm-hud{left:14px;bottom:58px;max-width:calc(100% - 28px);font-size:12px}
  .sm-coord{top:auto;bottom:110px;right:12px}
  .sm-legend{top:62px;right:10px;font-size:11px}
  .sm-walkpad{bottom:120px;right:12px}
  .sm-card{margin-bottom:-28px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* sm2a: account disclaimer kept prominent above the fold */
.sm-disc{margin:8px 0 0;max-width:46ch;font-size:13px;line-height:1.4;color:#e9e3d3;text-shadow:0 1px 3px #000,0 0 12px rgba(0,0,0,.8)}
.sm-disc b{color:#f0c674;font-weight:600}
@media(max-width:860px){.sm-disc{font-size:12px;max-width:34ch;margin-top:6px}}

/* sm2b: phone controls sheet (peek / half / full) */
@media (max-width:860px){
  .sm-main{height:calc(100vh - 48px);height:calc(100dvh - 48px)}
  .sm-panel{top:8px;bottom:0;max-height:none;display:flex;flex-direction:column;overflow:hidden;padding-bottom:0;transform:translateY(calc(100% - 46px - env(safe-area-inset-bottom,0px)));transition:transform .34s cubic-bezier(.2,.85,.25,1);will-change:transform;box-shadow:0 -10px 30px rgba(0,0,0,.45)}
  .sm-panel.drag{transition:none}
  .sm-grip{position:relative;flex:0 0 46px;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;border-radius:16px 16px 0 0}
  .sm-grip:focus-visible{outline:2px solid #e9d9a8;outline-offset:-3px}
  .sm-panel-body{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;padding-bottom:calc(28px + env(safe-area-inset-bottom,0px))}
  .sm-tabs{top:0}
}
