  :root{
    --panel:#000000;
    --panel-2:#000000;
    --text:#ffffff;
    --muted:#a8a8a8;
    --accent:#ffffff;
    --accent-dim:rgba(255,255,255,0.12);
    --line:#ffffff;
    --good:#ffffff;
  }
  *{box-sizing:border-box;}
  /* PERMANENT FONT RULE: every element, without exception, uses VT323.
     Root cause of every "wrong font" bug so far: browsers give form
     controls (button/input/select/textarea) their own system font by
     default and don't inherit page font-family unless told to, so any
     new button/input added later silently breaks the pixel-font look
     unless someone remembers to set it explicitly per-selector. This
     single high-specificity rule on the universal selector removes that
     failure mode for good — no future menu item can ever be missed. */
  *, button, input, select, textarea, ::before, ::after{
    font-family:'VT323', monospace !important;
  }
  html,body{margin:0;height:100%;background:#000;color:var(--text);
    font-family:'VT323', monospace; overflow:hidden;}
  #app{position:relative;width:100vw;height:100vh;background:#000;}
  canvas{display:block;width:100%;height:100%;cursor:grab;background:#000;}
  canvas.dragging{cursor:grabbing;}

  #topbar{
    position:absolute;top:0;left:0;right:0;
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 20px;
    background:linear-gradient(to bottom, rgba(0,0,0,0.9), rgba(0,0,0,0));
    pointer-events:none;
  }
  #topbar *{pointer-events:auto;}
  #title{font-family:'VT323', monospace;font-size:20px;letter-spacing:.02em;color:var(--text);}
  #title span{color:var(--accent);}
  #sub{font-size:15px;color:var(--muted);margin-top:2px;font-family:'VT323', monospace;}

  #controls{display:flex;gap:8px;align-items:center;height:34px;}
  .btn{
    background:var(--panel);border:1px solid var(--line);color:var(--text);
    font-size:17px;padding:0 12px;height:34px;line-height:32px;cursor:pointer;font-family:'VT323', monospace;
    display:inline-flex;align-items:center;justify-content:center;
  }
  .btn:hover{border-color:var(--accent);color:var(--accent);}

  #hint{
    position:absolute;bottom:14px;left:20px;font-size:16px;color:var(--muted);
    font-family:'VT323', monospace;pointer-events:none;
    background:#000;padding:6px 10px;border:1px solid var(--line);
  }
  #loading{
    position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    color:var(--muted);font-family:'VT323', monospace;font-size:18px;background:#000;z-index:50;
  }

  #inspector{
    position:absolute;top:0;right:0;bottom:0;width:320px;
    background:var(--panel);border-left:1px solid var(--line);
    transform:translateX(100%);transition:transform .22s ease;
    display:flex;flex-direction:column;
  }
  #inspector.open{transform:translateX(0);}
  #insp-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;}
  #insp-kind{font-size:15px;letter-spacing:.05em;color:var(--accent);
    font-family:'VT323', monospace;margin-bottom:6px;}
  #insp-name{font-size:24px;font-weight:400;line-height:1.3;}
  #insp-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1;padding:0 0 0 12px;}
  #insp-close:hover{color:var(--text);}
  #insp-body{padding:18px;overflow-y:auto;flex:1;}
  #insp-thumb{width:100%;border:1px solid var(--line);margin-bottom:16px;image-rendering:pixelated;display:block;background:#000;}
  .row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:18px;}
  .row .k{color:var(--muted);}
  .row .v{text-align:right;max-width:60%;}
  .row.selectable{cursor:pointer;padding:8px 10px;}
  .row.selectable.selected{background:#fff;}
  .row.selectable.selected .k, .row.selectable.selected .v{color:#000;}
  .row.selectable.selected .k::before{content:'✓ ';}
  #insp-desc{font-size:18px;color:var(--text);line-height:1.5;margin:14px 0;}
  .stack{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
  .fullbtn{width:100%;background:var(--panel-2);border:1px solid var(--line);color:var(--text);
    padding:10px;font-size:18px;cursor:pointer;text-align:center;text-decoration:none;display:block;}
  .fullbtn:hover{border-color:var(--accent);color:var(--accent);}
  .fullbtn.primary{background:var(--accent-dim);border-color:var(--accent);color:var(--accent);}
  .price{font-family:'VT323', monospace;color:var(--good);font-size:30px;margin:6px 0 2px;}

  /* ---- Member dashboard ---- */
  #dash{
    position:absolute;top:0;left:0;bottom:0;width:340px;
    background:#000;border-right:1px solid var(--line);
    transform:translateX(-100%);transition:transform .22s ease;
    display:flex;flex-direction:column;z-index:40;
  }
  #dash.open{transform:translateX(0);}
  #dash-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;}
  #dash-head .t{font-size:20px;}
  #dash-close{background:none;border:none;color:var(--text);font-size:20px;cursor:pointer;}
  #dash-tabs{display:flex;border-bottom:1px solid var(--line);}
  #dash-tabs .tab{flex:1;text-align:center;padding:10px 0;font-size:18px;color:var(--muted);cursor:pointer;}
  #dash-tabs .tab.active{color:#fff;border-bottom:2px solid #fff;}
  #dash-subtabs{display:flex;gap:8px;padding:10px 18px;}
  #dash-subtabs .sub{font-size:16px;padding:5px 12px;border:1px solid var(--line);color:var(--muted);cursor:pointer;}
  #dash-subtabs .sub.active{color:#000;background:#fff;}
  #dash-body{padding:18px;overflow-y:auto;flex:1;font-size:17px;}
  #dash-body label{display:block;font-size:14px;color:var(--muted);margin:12px 0 4px;}
  #dash-body input[type=text], #dash-body textarea{
    width:100%;background:#000;border:1px solid var(--line);color:#fff;
    font-family:'VT323', monospace;font-size:17px;padding:8px;
  }
  #dash-body textarea{resize:vertical;min-height:70px;}
  #dash-thumb{width:100%;border:1px solid var(--line);background:#000;image-rendering:pixelated;display:block;margin-bottom:6px;}
  #dash-charcount{font-size:13px;color:var(--muted);text-align:right;margin-top:2px;}

  /* ---- Discover panel (same visual language as the dashboard) ---- */
  #discover{
    position:absolute;top:0;right:0;bottom:0;width:340px;
    background:#000;border-left:1px solid var(--line);
    transform:translateX(100%);transition:transform .22s ease;
    display:flex;flex-direction:column;z-index:40;
  }
  #discover.open{transform:translateX(0);}
  #discover-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;}
  #discover-head .t{font-size:20px;}
  #discover-close{background:none;border:none;color:var(--text);font-size:20px;cursor:pointer;}
  #discover-cats{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px;border-bottom:1px solid var(--line);}
  #discover-cats .sub{font-size:16px;padding:5px 12px;border:1px solid var(--line);color:var(--muted);cursor:pointer;}
  #discover-cats .sub.active{color:#000;background:#fff;}
  #discover-body{padding:18px;overflow-y:auto;flex:1;font-size:17px;}
  #discover-body input[type=text]{
    width:100%;background:#000;border:1px solid var(--line);color:#fff;
    font-family:'VT323', monospace;font-size:17px;padding:8px;margin-bottom:8px;
  }
  .discover-card{padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer;}
  .discover-card img{width:100%;border:1px solid var(--line);image-rendering:pixelated;display:block;margin-bottom:8px;}

  /* ---- Payment modal ---- */
  #pay-overlay{
    position:absolute;inset:0;background:rgba(0,0,0,0.75);
    display:none;align-items:center;justify-content:center;z-index:60;
  }
  #pay-overlay.open{display:flex;}
  #pay-box{
    width:340px;background:#000;border:1px solid var(--line);padding:20px;
    font-family:'VT323', monospace;
  }
  #pay-box h3{margin:0 0 4px;font-size:22px;font-weight:400;}
  #pay-desc{color:var(--muted);font-size:16px;margin-bottom:10px;}
  #pay-amount{font-size:34px;color:var(--good);margin-bottom:14px;}
  #pay-box label{display:block;font-size:14px;color:var(--muted);margin:10px 0 4px;}
  #pay-box input{
    width:100%;background:#000;border:1px solid var(--line);color:#fff;
    font-family:'VT323', monospace;font-size:17px;padding:8px;
  }
  #pay-row2{display:flex;gap:10px;}
  #pay-row2 > div{flex:1;}
  #pay-note{font-size:13px;color:var(--muted);margin-top:10px;}
  #pay-actions{display:flex;gap:8px;margin-top:16px;}
  #pay-status{
    display:none;flex-direction:column;align-items:center;justify-content:center;
    padding:30px 0;text-align:center;
  }
  #pay-status.show{display:flex;}

  /* ---- Image editor (v41): controls on the left, image on the right ---- */
  #mask-overlay{
    position:absolute;inset:0;background:rgba(0,0,0,0.8);
    display:none;align-items:center;justify-content:center;z-index:60;
  }
  #mask-overlay.open{display:flex;}
  #mask-box{
    display:flex;gap:14px;background:#000;border:1px solid var(--line);padding:14px;
    font-family:'VT323', monospace;max-width:96vw;height:90vh;
  }
  #mask-side{width:230px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;overflow-y:auto;}
  #mask-side h3{margin:0;font-size:22px;font-weight:400;}
  #mask-side .fullbtn{width:100%;padding:6px 8px;}
  .mask-row{display:flex;gap:6px;align-items:center;}
  .mask-row .fullbtn{flex:1;}
  #mask-pos{min-width:56px;text-align:center;}
  #mask-thumbs{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;}
  #mask-thumbs .fullbtn{width:auto;min-width:30px;padding:2px 6px;}
  .mask-label{color:var(--muted);font-size:15px;margin-top:6px;}
  .mask-hint{color:var(--muted);font-size:14px;margin:0;}
  #mask-brush-size{width:100%;}
  #mask-canvas-wrap{
    position:relative;width:min(70vw, 1000px);height:100%;background:#111;
    display:flex;align-items:center;justify-content:center;overflow:hidden;
  }
  /* gray/white checker behind the image so transparent parts read as transparent */
  #mask-canvas-wrap canvas{
    image-rendering:pixelated;display:block;cursor:none;touch-action:none;
    background-color:#fff;
    background-image:
      linear-gradient(45deg, #cfcfcf 25%, transparent 25%), linear-gradient(-45deg, #cfcfcf 25%, transparent 25%),
      linear-gradient(45deg, transparent 75%, #cfcfcf 75%), linear-gradient(-45deg, transparent 75%, #cfcfcf 75%);
    background-size:16px 16px;background-position:0 0, 0 8px, 8px -8px, -8px 0;
  }
  #mask-brush{position:absolute;display:none;pointer-events:none;border:2px solid #f44;border-radius:50%;box-shadow:0 0 0 1px #000;}
  #mask-brush.restore{border-color:#4c4;}
  /* upload checks + toast */
  .chk{font-size:13px;margin-top:6px;}
  .chk.ok{color:#7fd17f;} .chk.bad{color:#f88;}
  .meter{height:6px;border:1px solid var(--line);margin-top:4px;} .meter span{display:block;height:100%;background:#7fd17f;}
  #toast{position:absolute;left:50%;bottom:70px;transform:translateX(-50%);background:#000;border:1px solid var(--line);color:#fff;
    padding:10px 16px;font-family:'VT323', monospace;font-size:17px;z-index:80;display:none;max-width:80vw;}
  #toast.show{display:block;} #toast.err{border-color:#f66;color:#f88;}
  @media (max-width:700px){ #mask-box{flex-direction:column;height:94vh;} #mask-side{width:auto;max-height:40vh;} #mask-canvas-wrap{width:90vw;flex:1;} }
  #pay-spinner{
    width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);
    border-radius:50%;animation:spin 0.7s linear infinite;margin-bottom:14px;
  }
  @keyframes spin{ to{ transform:rotate(360deg); } }
  #pay-success{display:none;text-align:center;padding:14px 0;}
  #pay-success.show{display:block;}
  #pay-success .check{font-size:40px;color:var(--good);margin-bottom:8px;}

  /* ---- Admin subtabs (mirrors #dash-subtabs) ---- */
  #admin-subtabs{display:flex;gap:8px;padding:10px 18px;flex-wrap:wrap;}
  #admin-subtabs .sub{font-size:16px;padding:5px 12px;border:1px solid var(--line);color:var(--muted);cursor:pointer;}
  #admin-subtabs .sub.active{color:#000;background:#fff;}

  /* ---- Login modal (mirrors payment modal) ---- */
  #login-overlay{
    position:absolute;inset:0;background:rgba(0,0,0,0.75);
    display:none;align-items:center;justify-content:center;z-index:61;
  }
  #login-overlay.open{display:flex;}
  #login-box{
    width:340px;background:#000;border:1px solid var(--line);padding:20px;
    font-family:'VT323', monospace;
  }
  #login-box h3{margin:0 0 4px;font-size:22px;font-weight:400;}
  #login-box label{display:block;font-size:14px;color:var(--muted);margin:10px 0 4px;}
  #login-box input[type="text"]{
    width:100%;background:#000;border:1px solid var(--line);color:#fff;
    font-family:'VT323', monospace;font-size:17px;padding:8px;
  }
  /* ---- Admin dashboard (full screen) ---- */
  #admin{position:absolute;inset:0;background:#000;z-index:55;display:none;flex-direction:column;font-family:'VT323', monospace;color:#fff;}
  #admin.open{display:flex;}
  #admin-head{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--line);}
  #admin-head .t{font-size:24px;}
  #admin-head .d{color:var(--muted);font-size:15px;margin-left:12px;}
  #admin-close{background:none;border:1px solid var(--line);color:#fff;font-size:18px;cursor:pointer;padding:2px 10px;font-family:inherit;}
  #admin-main{flex:1;display:flex;min-height:0;}
  #admin-nav{width:190px;border-right:1px solid var(--line);padding:10px 0;overflow-y:auto;flex-shrink:0;}
  #admin-nav .nav{padding:8px 18px;font-size:19px;color:var(--muted);cursor:pointer;}
  #admin-nav .nav:hover{color:#fff;}
  #admin-nav .nav.active{color:#000;background:#fff;}
  #admin-body{flex:1;overflow-y:auto;padding:16px 24px 60px;font-size:17px;}
  #admin-body h2{font-weight:400;font-size:26px;margin:0 0 12px;}
  #admin-body h3{font-weight:400;font-size:20px;margin:0 0 8px;}
  #admin-body input[type=text],#admin-body input[type=number],#admin-body select,#admin-body textarea{
    background:#000;border:1px solid var(--line);color:#fff;font-family:'VT323', monospace;font-size:17px;padding:5px 8px;}
  #admin-body textarea{width:100%;min-height:70px;}
  #admin-body .fullbtn{width:auto;}
  .adm-muted{color:var(--muted);}
  .adm-bar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;}
  .adm-bar .adm-q{flex:1;min-width:180px;}
  .adm-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .adm-card{border:1px solid #444;padding:12px 14px;margin:12px 0;}
  .adm-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-bottom:18px;}
  .adm-tile{border:1px solid var(--line);padding:12px;cursor:pointer;}
  .adm-tile:hover{background:#111;}
  .adm-tile .v{font-size:32px;}
  .adm-tile .k{color:var(--muted);}
  .adm-scroll{overflow-x:auto;}
  .adm-table{width:100%;border-collapse:collapse;min-width:560px;}
  .adm-table th{text-align:left;color:var(--muted);font-weight:400;border-bottom:1px solid var(--line);padding:6px 8px;}
  .adm-table td{border-bottom:1px solid #333;padding:5px 8px;vertical-align:middle;}
  .adm-table tr.click{cursor:pointer;}
  .adm-table tr.click:hover td{background:#151515;}
  .adm-mini{width:32px;height:32px;object-fit:cover;background:#111;image-rendering:pixelated;display:block;}
  .adm-big{width:220px;max-height:260px;object-fit:contain;background:#111;border:1px solid #444;image-rendering:pixelated;}
  .adm-pill{border:1px solid var(--muted);color:var(--muted);font-size:13px;padding:0 5px;}
  .adm-st{font-size:15px;padding:0 6px;border:1px solid #666;}
  .st-for-sale{border-color:#e8b34a;color:#e8b34a;}
  .st-built{border-color:#7fd17f;color:#7fd17f;}
  .st-sold-empty{border-color:#8fb7ff;color:#8fb7ff;}
  .st-reserved,.st-blocked{border-color:#c88cff;color:#c88cff;}
  .st-active{border-color:#7fd17f;color:#7fd17f;}
  .st-warned{border-color:#e8b34a;color:#e8b34a;}
  .st-suspended,.st-banned{border-color:#f66;color:#f66;}
  .adm-listrow,.adm-mod,.adm-rule{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #333;}
  .adm-listrow{cursor:pointer;}
  .adm-listrow img,.adm-mod img{width:48px;height:48px;object-fit:cover;background:#111;image-rendering:pixelated;}
  .adm-rule.off{opacity:.5;}
  .adm-check{display:flex;align-items:center;gap:8px;margin:6px 0;cursor:pointer;}
  .adm-check input{width:auto;}
  .adm-back{margin-bottom:12px;}
  .adm-logrow{padding:5px 0;border-bottom:1px solid #222;}
  @media (max-width:700px){
    #admin-main{flex-direction:column;}
    #admin-nav{width:auto;display:flex;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:0;}
    #admin-nav .nav{white-space:nowrap;padding:8px 12px;}
    #admin-body{padding:12px 16px 60px;}
  }
  /* =================================================================
     UI v42 - one design for every panel (member, house, discover,
     admin, modals, top bar). Pixel font everywhere, sharp edges,
     quiet gray lines, white only for the one main action.
     ================================================================= */
  :root{
    --line:#3a3a3a; --line-strong:#ffffff; --surface:#0c0c0c; --surface2:#141414;
    --muted:#8d8d8d; --ok:#7fd17f; --warn:#e8b34a; --bad:#ff6b6b;
  }
  *, *::before, *::after{border-radius:0 !important;}
  body{font-size:18px;}
  /* top bar */
  #title{font-size:24px;letter-spacing:.06em;}
  #sub{font-size:15px;}
  .btn{border-color:#555;font-size:18px;}
  .btn:hover{border-color:#fff;color:#fff;}
  #hint{border-color:var(--line);}
  /* buttons: outlined by default, white = the main action */
  .fullbtn{background:transparent;border:1px solid #555;color:var(--text);padding:8px 10px;font-size:18px;line-height:1.1;}
  .fullbtn:hover{border-color:#fff;color:#fff;}
  .fullbtn.primary{background:#fff;color:#000;border-color:#fff;}
  .fullbtn.primary:hover{background:#ddd;color:#000;}
  .fullbtn:disabled{opacity:.35;cursor:default;}
  .fullbtn.ui-sm{width:auto;padding:5px 10px;font-size:17px;display:inline-block;}
  .del-btn{border-color:rgba(255,107,107,.5) !important;color:var(--bad) !important;}
  /* side panels: same frame for all */
  #dash, #discover, #inspector{width:380px;background:#000;}
  #dash{border-right:1px solid var(--line);} #discover, #inspector{border-left:1px solid var(--line);}
  #dash-head, #discover-head, #insp-head{padding:16px 18px 12px;border-bottom:none;}
  #dash-head .t, #discover-head .t{font-size:26px;letter-spacing:.06em;}
  #dash-close, #discover-close, #insp-close{width:30px;height:30px;border:1px solid #555 !important;color:#ccc;font-size:16px;padding:0;}
  #dash-tabs{border-bottom:1px solid var(--line);padding:0 12px;gap:2px;}
  #dash-tabs .tab{flex:0 0 auto;padding:8px 6px 9px;font-size:18px;margin-bottom:-1px;border-bottom:2px solid transparent;}
  #dash-tabs .tab.active{border-bottom:2px solid #fff;color:#fff;}
  #dash-body, #discover-body, #insp-body{padding:14px 18px 30px;font-size:18px;}
  #dash-body label, .ui-label{display:block;font-size:16px;color:var(--muted);margin:12px 0 5px;}
  #dash-body input[type=text], #dash-body textarea, #discover-body input[type=text], #admin-body input, #admin-body select, #admin-body textarea{
    background:#050505;border:1px solid #555;color:#fff;font-size:18px;padding:6px 8px;}
  #dash-body input.bad{border-color:var(--bad);}
  #discover-cats{border-bottom:1px solid var(--line);}
  #discover-cats .sub, #dash-subtabs .sub{border-color:#555;font-size:17px;}
  #discover-cats .sub.active{background:#fff;color:#000;border-color:#fff;}
  .discover-card{border-bottom:1px solid var(--line);}
  .discover-card img{border-color:var(--line);}
  .row{border-bottom:1px solid var(--line);font-size:18px;}
  #insp-kind{color:var(--muted);font-size:16px;letter-spacing:.04em;}
  #insp-name{font-size:28px;}
  #insp-thumb{border:1px solid var(--line);cursor:zoom-in;background:#0a0a0a;}
  .insp-zoomhint{font-size:15px;color:var(--muted);margin:-10px 0 14px;}
  /* shared building blocks */
  .ui-muted{color:var(--muted);font-size:16px;}
  .ui-h{font-size:22px;letter-spacing:.05em;color:#fff;}
  .ui-grow{flex:1;min-width:0;}
  .ui-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
  .ui-sec-h{display:flex;align-items:baseline;justify-content:space-between;margin:16px 0 8px;}
  .ui-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
  .ui-stats div{border:1px solid var(--line);background:var(--surface);padding:8px 10px;}
  .ui-stats b{display:block;font-size:26px;font-weight:400;line-height:1;}
  .ui-stats span{font-size:15px;color:var(--muted);}
  .ui-lotcard{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);background:var(--surface);margin-bottom:8px;cursor:pointer;}
  .ui-lotcard:hover{border-color:#888;}
  .ui-thumb{width:52px;height:52px;flex-shrink:0;border:1px solid var(--line);background:#0a0a0a center/contain no-repeat;image-rendering:pixelated;}
  .ui-thumb.big{width:64px;height:64px;}
  .ui-thumbimg{width:52px;height:52px;object-fit:contain;border:1px solid var(--line);background:#0a0a0a;image-rendering:pixelated;flex-shrink:0;}
  .chip{display:inline-block;white-space:nowrap;font-size:15px;line-height:1;padding:3px 6px;border:1px solid #666;color:#bbb;}
  .chip.ok{color:var(--ok);border-color:rgba(127,209,127,.5);}
  .chip.warn{color:var(--warn);border-color:rgba(232,179,74,.55);}
  .ui-back{color:var(--muted);cursor:pointer;margin-bottom:10px;font-size:17px;}
  .ui-back:hover{color:#fff;}
  .ui-lothead{display:flex;gap:12px;align-items:center;}
  .ui-title{font-size:26px;line-height:1.05;}
  .ui-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
  .re-view{margin:10px 0 4px;}
  .ui-acc{border:1px solid var(--line);background:var(--surface);margin-top:10px;}
  .ui-acc-h{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;}
  .ui-acc-h:hover .ui-h{text-decoration:underline;}
  .ui-sum{margin-top:2px;}
  .ui-chev{color:var(--muted);font-size:13px;}
  .ui-acc-b{display:none;padding:0 12px 12px;}
  .ui-acc.open .ui-acc-b{display:block;}
  .ui-acc.open .ui-sum{display:none;}
  .ui-preview{width:100%;max-height:260px;object-fit:contain;background:#0a0a0a;border:1px solid var(--line);image-rendering:pixelated;display:block;margin-bottom:6px;}
  .ui-floors{display:flex;gap:4px;margin:2px 0 10px;}
  .ui-fl{flex:1;height:26px;border:1px solid #555;display:grid;place-items:center;font-size:16px;color:#666;}
  .ui-fl.own{background:#e8e8e8;color:#000;border-color:#e8e8e8;}
  .ui-fl.next{border:1px dashed #fff;color:#fff;}
  .ui-link{color:#fff;}
  .ui-offer{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);}
  .ui-amt{font-size:22px;font-weight:400;min-width:44px;}
  .ui-toggle{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);cursor:pointer;}
  .ui-toggle.disabled{opacity:.4;cursor:default;}
  .ui-sw{width:36px;height:20px;border:1px solid #777;position:relative;flex-shrink:0;}
  .ui-sw::after{content:"";position:absolute;width:14px;height:14px;top:2px;left:2px;background:#777;}
  .ui-sw.on{background:#fff;border-color:#fff;} .ui-sw.on::after{left:18px;background:#000;}
  /* upload control */
  .anim-wrap input[type=file]{width:100%;font-size:16px;color:var(--muted);}
  .anim-help{font-size:15px !important;color:var(--muted);margin-top:6px;}
  .anim-help p{margin:0 0 3px;}
  .anim-help b{color:#fff;font-weight:400;}
  .chk{font-size:16px !important;}
  /* admin + modals follow the same tokens */
  #admin{background:#000;}
  #admin-head{border-bottom:1px solid var(--line);}
  #admin-head .t{font-size:28px;letter-spacing:.06em;}
  #admin-close{border-color:#555;}
  #admin-nav{border-right:1px solid var(--line);}
  #admin-nav .nav{font-size:20px;}
  #admin-body{font-size:18px;}
  #admin-body h2{font-size:30px;letter-spacing:.04em;text-transform:uppercase;}
  #admin-body h3{font-size:22px;letter-spacing:.04em;text-transform:uppercase;}
  .adm-card{border-color:var(--line);background:var(--surface);}
  .adm-tile{border-color:var(--line);background:var(--surface);}
  .adm-tile:hover{border-color:#888;background:var(--surface);}
  .adm-table th{border-bottom-color:var(--line);}
  .adm-table td{border-bottom-color:#222;}
  .adm-st, .adm-pill{font-size:15px;}
  #pay-box, #login-box, #mask-box{border-color:var(--line);}
  #pay-box h3, #login-box h3{font-size:26px;letter-spacing:.04em;}
  /* image viewer (house close-up) */
  #viewer{position:absolute;inset:0;z-index:70;background:rgba(0,0,0,.88);display:none;flex-direction:column;}
  #viewer.open{display:flex;}
  #viewer-bar{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line);background:#000;}
  #viewer-title{flex:1;font-size:22px;}
  #viewer-stage{flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;cursor:zoom-out;}
  #viewer-stage.actual{display:block;cursor:grab;text-align:center;}
  #viewer-stage.actual.drag{cursor:grabbing;}
  #viewer-img{image-rendering:pixelated;display:block;margin:auto;
    background-color:#fff;background-image:linear-gradient(45deg,#cfcfcf 25%,transparent 25%),linear-gradient(-45deg,#cfcfcf 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#cfcfcf 75%),linear-gradient(-45deg,transparent 75%,#cfcfcf 75%);
    background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;}
  #viewer.dark #viewer-img{background:#000;}
  #dash, #discover, #inspector{overflow:hidden;}
  #mask-side{overflow-x:hidden;width:250px;gap:6px;}
  #mask-side .fullbtn{width:100%;min-width:0;}
  .mask-row .fullbtn{padding:6px 2px;font-size:17px;}
  #mask-side{width:270px;overflow-y:auto;}
  .mask-sl{gap:6px;}
  .mask-sl input[type=range]{flex:1;min-width:0;}
  .mask-num{width:58px;flex:0 0 58px;background:#050505;border:1px solid #555;color:#fff;font-size:17px;padding:2px 4px;text-align:right;}
  .mask-num:focus{border-color:#fff;outline:none;}
  .mask-unit{color:var(--muted);font-size:16px;min-width:14px;}
  .mask-zeros .fullbtn{font-size:15px !important;}
  #mask-undo:disabled, #mask-redo:disabled{opacity:.35;}
  /* spacing rule (v46): one consistent gap between every row of controls,
     nothing touches the row below it */
  #mask-side{gap:8px;}
  #mask-side > *, #mask-place-box > *, #mask-shape-box > *, #mask-frames-box > *, .mask-foot > *{margin-top:0;margin-bottom:0;}
  #mask-place-box, #mask-shape-box, #mask-frames-box{display:flex;flex-direction:column;gap:8px;}
  #mask-shape-reset{margin-top:6px !important;}
  .mask-label{margin:0 0 -4px !important;}
  .ui-acc-b > * + *{margin-top:8px;}
  .ui-acc-b .ui-floors{margin-bottom:0;}
  .ui-acc-b .fullbtn + .fullbtn, .ui-acc-b .fullbtn + .del-btn{margin-top:8px;}
  #insp-body .stack .fullbtn + .fullbtn{margin-top:0;}
  .adm-card > * + *{margin-top:8px;}
  .adm-row + .adm-row{margin-top:8px;}
  #mask-right{display:flex;flex-direction:column;width:min(70vw, 1000px);height:100%;gap:8px;}
  #mask-right #mask-canvas-wrap{width:100%;flex:1;height:auto;min-height:0;}
  #mask-framebar{display:flex;align-items:center;justify-content:center;gap:14px;}
  #mask-framebar .fullbtn{width:auto;padding:6px 26px;font-size:22px;}
  #mask-fb-pos{font-size:22px;min-width:130px;text-align:center;}
  .mask-frow{display:flex;align-items:center;gap:6px;margin-bottom:4px;}
  .mask-frow .fullbtn{flex:1;text-align:left;padding:4px 8px;}
  .mask-frow .mask-num{flex:0 0 64px;width:64px;}
  .mask-setall .fullbtn{width:auto;flex:0 0 auto;padding:4px 8px;}
  .mask-setall .mask-num{flex:0 0 64px;width:64px;}
  #mask-side .mask-hint{margin:0;}
  #mask-brush{border-radius:50% !important;}
  /* editor checker: two very dark grays, so white leftovers stand out */
  #mask-canvas-wrap canvas{background-color:#1e1e1e !important;
    background-image:linear-gradient(45deg,#2a2a2a 25%,transparent 25%),linear-gradient(-45deg,#2a2a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a2a 75%),linear-gradient(-45deg,transparent 75%,#2a2a2a 75%) !important;}
  .mask-foot{position:sticky;bottom:-1px;background:#000;padding:8px 0 2px;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);}
  .mask-sec{font-size:18px;letter-spacing:.06em;color:#fff;margin-top:10px;border-top:1px solid var(--line);padding-top:8px;}
  #mask-side input[type=range]{width:100%;min-width:0;}
  .mask-row input[type=range]{flex:1;}
  .mask-xy label{flex:1;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:17px;}
  .mask-xy input{width:100%;min-width:0;background:#050505;border:1px solid #555;color:#fff;font-size:17px;padding:3px 5px;}
  #mask-canvas-wrap canvas.move-tool{cursor:grab;}
  #mask-canvas-wrap canvas.move-tool.dragging{cursor:grabbing;}
  .ui-stats b{white-space:nowrap;}
  .ui-lotcard .ui-grow > div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  #dash-tabs{overflow-x:auto;scrollbar-width:none;flex-wrap:nowrap;}
  #dash-tabs::-webkit-scrollbar{display:none;}
  #dash-tabs .tab{padding:8px 5px 9px;}
  .anim-wrap input[type=file]::file-selector-button{background:transparent;border:1px solid #555;color:#fff;padding:5px 10px;margin-right:10px;cursor:pointer;font-family:'VT323', monospace;font-size:17px;}
  .anim-wrap input[type=file]::file-selector-button:hover{border-color:#fff;}
  @media (max-width:700px){ #dash, #discover, #inspector{width:100vw;} }
