/* Студия «Квартира»: палитра из материалов самой квартиры.
   День — фон W980 «Платиновый белый» (купе), Вечер — U732 «Серый асфальт» (корпус гардеробной).
   Единственный яркий приём — светящаяся линия ленты 4000 К (как LED-профиль под полкой). */
:root{
  --ground:#e7e5e0;      /* W980, чуть холоднее кремового */
  --sheet:#f3f2ee;       /* светлая плита — поверхность панелей */
  --ink:#26282b;         /* графит */
  --ink-2:#5c5f63;       /* серый асфальт, тёмный тон */
  --rule:#cfccc5;        /* кромка */
  --oak:#7a6450;         /* копчёный дуб — ссылки и действия */
  --led:#f2b766;         /* лента 4000 К в дневном свете — читаемый тёплый */
  --led-glow:rgba(242,183,102,.55);
  --danger:#9b3f2a;
  --shade:rgba(38,40,43,.06);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --ground:#2b2c2b;      /* U732 в тени */
  --sheet:#353634;
  --ink:#ece9e3;
  --ink-2:#a9a6a0;
  --rule:#4a4b48;
  --oak:#c9a883;
  --led:#ffd9a8;         /* лента вечером */
  --led-glow:rgba(255,217,168,.7);
  --danger:#e3907a;
  --shade:rgba(0,0,0,.25);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#2b2c2b;--sheet:#353634;--ink:#ece9e3;--ink-2:#a9a6a0;--rule:#4a4b48;--oak:#c9a883;
    --led:#ffd9a8;--led-glow:rgba(255,217,168,.7);--danger:#e3907a;--shade:rgba(0,0,0,.25);color-scheme:dark;
  }
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:400 16px/1.55 "Golos Text",system-ui,sans-serif;
  padding-inline:clamp(16px,4vw,56px);padding-block:0 72px;font-variant-numeric:lining-nums}
a{color:var(--oak);text-decoration-thickness:1px;text-underline-offset:3px}
:focus-visible{outline:2px solid var(--led);outline-offset:3px;border-radius:2px}
.wrap{max-width:1280px;margin:0 auto}
h1,h2,h3,.display{font-family:"Jost",system-ui,sans-serif;font-weight:300;letter-spacing:-.01em;text-wrap:balance;margin:0}
p{margin:0}
.muted{color:var(--ink-2)}
.num{font-family:"Jost",system-ui,sans-serif;font-weight:300;font-variant-numeric:tabular-nums lining-nums}

/* шапка */
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:22px 0}
.brand{font:400 15px/1 "Jost",sans-serif;letter-spacing:.02em;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:10px}
.brand i{display:block;width:26px;height:3px;border-radius:2px;background:var(--led);box-shadow:0 0 10px var(--led-glow)}
.mode{display:flex;border:1px solid var(--rule);border-radius:20px;padding:2px}
.mode button{font:inherit;font-size:13px;border:0;background:none;color:var(--ink-2);padding:5px 12px;border-radius:16px;cursor:pointer}
.mode button[aria-pressed="true"]{background:var(--sheet);color:var(--ink);box-shadow:0 1px 2px var(--shade)}

/* меню пользователя */
.who{display:flex;gap:16px;align-items:center;font-size:14px}
.who a,.who .linkish{color:var(--ink-2);text-decoration:none;font:inherit;background:none;border:0;padding:0;cursor:pointer}
.who a:hover,.who .linkish:hover{color:var(--ink)}
.who-name{color:var(--ink)}
@media (max-width:560px){.who-name{display:none}}
.topright{display:flex;gap:18px;align-items:center}

/* светящаяся линия — главный приём */
.led{height:2px;border-radius:2px;background:var(--led);box-shadow:0 0 12px 1px var(--led-glow)}

/* кнопки и поля */
.btn{font:500 14px/1 "Golos Text",sans-serif;padding:11px 18px;border-radius:3px;border:1px solid var(--ink);background:var(--ink);color:var(--ground);cursor:pointer}
.btn.quiet{background:transparent;color:var(--ink);border-color:var(--rule)}
.btn:disabled{opacity:.5;cursor:progress}
input[type=text],select{font:inherit;font-size:15px;padding:10px 12px;border:1px solid var(--rule);border-radius:3px;background:var(--sheet);color:var(--ink)}
input[type=file]{font:inherit;font-size:14px;color:var(--ink-2)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* план комнаты (plan.js) */
.planbox svg{width:100%;height:100%;display:block;overflow:visible}
.planbox .wall{fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:square;vector-effect:non-scaling-stroke}
.planbox .hole{stroke:var(--led);stroke-width:4;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px var(--led-glow))}
.planbox .floor{fill:color-mix(in srgb,var(--ink) 4%,transparent)}
.planbox .dim{font:300 13px "Jost",sans-serif;fill:var(--ink-2)} .planbox .dimline{stroke:var(--ink-2);stroke-width:1;vector-effect:non-scaling-stroke}
.planbox .obj{fill:none;stroke:var(--ink-2);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.draw .wall{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw 1.4s cubic-bezier(.6,0,.2,1) forwards}
.draw .hole,.draw .dim,.draw .dimline,.draw .obj{opacity:0;animation:show .5s 1.3s forwards}
@keyframes draw{to{stroke-dashoffset:0}} @keyframes show{to{opacity:1}}
@media (prefers-reduced-motion:reduce){.draw .wall{animation:none;stroke-dasharray:none}.draw .hole,.draw .dim,.draw .dimline,.draw .obj{animation:none;opacity:1}}

/* скан: памятка, проверка, сверка рулеткой (scanhelp.js) */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sc-steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:14px}
.sc-steps li{counter-increment:s;display:grid;grid-template-columns:30px 1fr;column-gap:12px;align-content:start}
.sc-steps li::before{content:counter(s);grid-row:span 2;font:200 30px/1 "Jost",sans-serif;color:var(--ink-2)}
.sc-steps b{font-weight:500} .sc-steps span{color:var(--ink-2);font-size:14px}
.sc-rules{margin:0;padding:0;list-style:none;display:grid;gap:8px;font-size:14px;color:var(--ink-2)}
.sc-rules b{color:var(--ink);font-weight:500}
.sc-checks{margin:0;padding:0;list-style:none;display:grid;border-top:1px solid var(--rule)}
.sc-checks li{display:grid;grid-template-columns:14px 1fr;gap:12px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--rule);font-size:15px}
.sc-checks i{width:10px;height:10px;border-radius:50%;transform:translateY(1px)}
.sc-checks .ok i{background:var(--led);box-shadow:0 0 8px var(--led-glow)}
.sc-checks .warn i,.sc-checks .bad i{background:transparent;border:1.5px solid var(--danger)}
.sc-checks .warn span,.sc-checks .bad span{color:var(--ink)}
.sc-tape{display:grid;gap:10px}
.sc-tape label{font-size:15px;color:var(--ink-2)} .sc-tape label b{color:var(--ink);font-weight:500}
.sc-tape-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sc-tape-row input{width:9ch;font:300 22px "Jost",sans-serif;font-variant-numeric:tabular-nums}
.sc-tape-row span{color:var(--ink-2)}
.sc-tape-ok{color:var(--ink)} .sc-tape-ok::before{content:"";display:inline-block;width:18px;height:2px;margin:0 8px 4px 0;background:var(--led);box-shadow:0 0 8px var(--led-glow)}
.sc-tape-bad{color:var(--danger)}
.planbox .mark{stroke:var(--oak);stroke-width:2;stroke-dasharray:10 6;vector-effect:non-scaling-stroke;animation:markpulse 2.4s ease-in-out infinite}
.planbox .marktx{font-family:"Jost",sans-serif;font-weight:400;fill:var(--oak)}
@keyframes markpulse{50%{stroke-opacity:.55}}
@media (prefers-reduced-motion:reduce){.planbox .mark{animation:none}}
