/* ============================================================
   ОТЗВУК — Акустическая топология
   Эстетика: полевой инструмент / журнал обсерватории.
   Тёплый графит, гравированная сетка, сдержанный янтарь + сталь.
   Не неон. Серьёзно, плотно, объёмно по звуку.
   ============================================================ */
:root{
  --void:#08080a; --void-2:#0d0d10; --char:#131316;
  --panel:rgba(21,21,26,0.64); --panel-2:rgba(30,30,35,0.92);
  --ink:#f1ece2; --ink-dim:#ccc6ba; --mut:#988f82; --faint:#766f64; --faintest:#544f47;
  --ember:#c4664a; --ember-soft:#dc9078; --steel:#8fabb3; --steel-dim:#5f7c85;
  --gold:#b39668;
  --line:rgba(241,236,226,0.062); --line-2:rgba(241,236,226,0.03);
  --grid:rgba(199,154,75,0.11);
  --shadow:0 44px 100px -46px rgba(0,0,0,0.94);
  --ease:cubic-bezier(.4,0,.2,1); --ease-out:cubic-bezier(.16,1,.3,1);
  --elev:0 1px 0 rgba(241,236,226,0.04) inset, 0 40px 92px -46px rgba(0,0,0,0.9), 0 12px 32px -20px rgba(0,0,0,0.55);
  --space:clamp(1rem,3vw,1.4rem);
  --sb:env(safe-area-inset-bottom,0px); --st:env(safe-area-inset-top,0px);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;}
body{
  background:var(--void);
  background-image:radial-gradient(130% 95% at 50% -12%, rgba(38,33,44,0.5) 0%, rgba(12,11,15,0) 56%), radial-gradient(95% 75% at 50% 118%, rgba(46,29,22,0.26) 0%, rgba(8,8,10,0) 62%);
  color:var(--ink);
  font-family:'Spline Sans',system-ui,sans-serif; line-height:1.6;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; overflow:hidden; user-select:none;
}
.serif{font-family:'Fraunces',Georgia,serif;font-feature-settings:"ss01","liga","dlig","onum","kern";}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;}

/* виньетка — единственный постоянный фон-эффект */
body::after{content:"";position:fixed;inset:0;z-index:1000;pointer-events:none;
  background:radial-gradient(140% 105% at 50% 32%, transparent 52%, rgba(3,3,5,0.55) 100%);}
/* тонкое плёночное зерно поверх интерфейса — аналоговая фактура */
body::before{content:"";position:fixed;inset:0;z-index:998;pointer-events:none;opacity:0.03;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");background-size:140px 140px;}

button{font-family:inherit;color:inherit;cursor:pointer;border:none;background:none;}
input,textarea{font-family:inherit;}
:focus-visible{outline:1.5px solid var(--ember);outline-offset:3px;}
::-webkit-scrollbar{width:5px;height:5px;}::-webkit-scrollbar-thumb{background:var(--faint);border-radius:4px;}
::selection{background:rgba(226,97,58,0.3);}

/* фоновые холсты */
#layer-3d{position:fixed;inset:0;z-index:1;transition:filter 1.4s ease,opacity 1.4s ease;}
#layer-3d.blur{filter:blur(28px) brightness(0.32) saturate(0.7);opacity:0.6;}
#layer-2d{position:fixed;inset:0;z-index:2;pointer-events:none;}
#ui-root{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;height:100dvh;pointer-events:none;}
.interactive{pointer-events:auto;}

/* стекло-панель */
.glass{background:var(--panel);border:1px solid var(--line);backdrop-filter:blur(26px) saturate(1.1);-webkit-backdrop-filter:blur(26px);border-radius:18px;box-shadow:var(--shadow),inset 0 1px 0 rgba(236,230,218,0.04);}

/* кнопки */
.btn-primary{background:var(--ink);color:var(--void);padding:1.05rem 1.8rem;font-weight:600;font-size:0.8rem;letter-spacing:0.05em;text-transform:uppercase;border-radius:var(--r-md);width:100%;text-align:center;box-shadow:0 1px 0 rgba(255,255,255,0.28) inset,0 14px 34px -18px rgba(241,236,226,0.45);transition:transform .2s var(--ease),box-shadow .3s var(--ease),opacity .2s;}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 1px 0 rgba(255,255,255,0.32) inset,0 22px 46px -20px rgba(241,236,226,0.5);}
.btn-primary:active{transform:translateY(0);}
.btn-primary:disabled{opacity:0.35;pointer-events:none;}
.btn-ember{background:linear-gradient(180deg,var(--ember-soft),var(--ember));color:#190c06;border:none;box-shadow:0 14px 34px -18px rgba(196,102,74,0.65);}
.btn-ember:hover{box-shadow:0 20px 48px -18px rgba(196,102,74,0.72);}
.btn-secondary{background:rgba(241,236,226,0.055);border:1px solid transparent;color:var(--ink);padding:1.05rem 1.8rem;font-weight:500;font-size:0.78rem;letter-spacing:0.05em;text-transform:uppercase;border-radius:var(--r-md);width:100%;text-align:center;transition:all .22s var(--ease);}
.btn-secondary:hover{background:rgba(236,230,218,0.06);border-color:var(--ink);}
.btn-secondary:disabled{opacity:0.35;pointer-events:none;}
.btn-warn{background:transparent;border:1px solid rgba(226,97,58,0.45);color:var(--ember-soft);padding:0.7rem 1.2rem;font-size:0.66rem;letter-spacing:0.08em;text-transform:uppercase;border-radius:10px;width:100%;transition:all .22s;}
.btn-warn:hover{background:var(--ember);color:#180c07;border-color:var(--ember);}

.inp{width:100%;background:rgba(0,0,0,0.35);border:1px solid var(--line);border-radius:12px;color:var(--ink);font-family:'JetBrains Mono',monospace;font-size:0.86rem;padding:0.9rem 1rem;letter-spacing:0.04em;outline:none;transition:border-color .25s;}
.inp:focus{border-color:var(--ember);}
.inp::placeholder{color:var(--faint);letter-spacing:0.1em;}

/* теги опросника */
.tag{display:inline-block;padding:0.5rem 0.75rem;border:1px solid var(--line);border-radius:9px;font-size:0.7rem;letter-spacing:0.01em;cursor:pointer;transition:all .16s;color:var(--mut);background:rgba(0,0,0,0.25);}
.tag:hover{border-color:var(--ink-dim);color:var(--ink);transform:translateY(-1px);}
.tag.active{border-color:var(--ember);color:#180c07;background:var(--ember);font-weight:600;}

.eyebrow{font-family:'JetBrains Mono';font-size:0.58rem;letter-spacing:0.28em;text-transform:uppercase;color:var(--ember);}
.label-xs{font-family:'JetBrains Mono';font-size:0.56rem;letter-spacing:0.16em;text-transform:uppercase;color:var(--faint);}

/* навигация */
nav{position:fixed;top:0;left:0;width:100%;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:calc(1.1rem + var(--st)) 1.6rem 1rem;background:linear-gradient(to bottom,rgba(10,10,12,0.92),transparent);}
.brand{display:flex;align-items:baseline;gap:0.6rem;cursor:pointer;}
.brand .bn{font-family:'Fraunces';font-weight:600;font-size:1.22rem;letter-spacing:0.01em;}
.brand .bx{font-family:'JetBrains Mono';font-size:0.5rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--faint);}
.nav-links{display:flex;gap:1.1rem;align-items:center;}
.nav-btn{font-family:'JetBrains Mono';font-size:0.62rem;font-weight:500;letter-spacing:0.12em;color:var(--mut);text-transform:uppercase;transition:color .25s;position:relative;padding:0.2rem 0;}
.nav-btn:hover{color:var(--ink);}
.nav-btn.active{color:var(--ember-soft);}
.nav-btn.active::after{content:"";position:absolute;bottom:-3px;left:0;width:100%;height:1px;background:var(--ember);}
.role-chip{font-family:'JetBrains Mono';font-size:0.5rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--faint);border:1px solid var(--line);border-radius:6px;padding:3px 7px;}

/* системный бейдж */
.sys-badge{position:fixed;top:calc(4.6rem + var(--st));right:1.6rem;font-family:'JetBrains Mono';font-size:0.56rem;letter-spacing:0.08em;color:var(--faint);display:flex;align-items:center;gap:8px;z-index:40;pointer-events:none;}
.ping{width:6px;height:6px;border-radius:50%;background:var(--faint);transition:all .5s;}
.ping.active{background:var(--ember);box-shadow:0 0 12px var(--ember);}

/* скролл-контейнер экранов */
.screen-scroll{position:absolute;inset:0;overflow-y:auto;scrollbar-gutter:stable;padding:calc(5.5rem + var(--st)) 1.2rem calc(2rem + var(--sb));display:flex;flex-direction:column;align-items:center;}
/* вариант для шагов опроса: вертикально по центру, без скролла когда влезает */
.screen-fit{justify-content:safe center;padding-top:calc(4rem + var(--st));}
.screen-fit>*{flex:0 0 auto;}
.fade-in{animation:fadeUp .6s var(--ease-out);}
@keyframes fadeUp{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:none;}}
.stagger > *{opacity:0;animation:fadeUp .7s cubic-bezier(.2,.8,.2,1) forwards;}
.stagger > *:nth-child(1){animation-delay:.05s;}
.stagger > *:nth-child(2){animation-delay:.16s;}
.stagger > *:nth-child(3){animation-delay:.27s;}
.stagger > *:nth-child(4){animation-delay:.38s;}
.stagger > *:nth-child(5){animation-delay:.49s;}
.stagger > *:nth-child(6){animation-delay:.6s;}

/* AUTH */
#auth-wrap{max-width:600px;text-align:center;}
#auth-wrap h1{font-family:'Fraunces';font-weight:600;font-size:clamp(2.9rem,11vw,5.2rem);line-height:0.9;letter-spacing:-0.038em;margin:10px 0 8px;}
#auth-wrap h1 .em{font-style:italic;color:var(--ember);}
#auth-wrap .sub{font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.3em;text-transform:uppercase;color:var(--mut);margin-bottom:30px;}
#auth-wrap .desc{font-size:0.96rem;color:var(--ink-dim);max-width:42ch;margin:0 auto 30px;font-weight:300;}
.gate{max-width:320px;margin:0 auto;}
.gate-div{max-width:320px;margin:30px auto 0;border-top:1px solid var(--line);padding-top:24px;}

/* WIZARD */
.wz-head{text-align:center;margin-bottom:8px;}
.wz-step{font-family:'JetBrains Mono';font-size:0.58rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--ember);}
.wz-title{font-family:'Fraunces';font-weight:600;font-size:clamp(1.8rem,6vw,2.6rem);line-height:1.0;letter-spacing:-0.01em;margin:6px 0 4px;}
.wz-sub{font-size:0.86rem;color:var(--mut);margin-bottom:26px;text-align:center;}
.wz-prog{display:flex;gap:6px;justify-content:center;margin-bottom:26px;}
.wz-prog i{width:34px;height:2px;border-radius:2px;background:var(--line);transition:all .4s;}
.wz-prog i.on{background:var(--ember);width:44px;}
.q-block{margin-bottom:22px;}
.q-title{display:block;font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:9px;}
.q-opts{display:flex;flex-wrap:wrap;gap:7px;}

/* запись */
.rec-orb{position:relative;width:160px;height:160px;display:flex;align-items:center;justify-content:center;margin:0 auto;}
.rec-orb .ring{position:absolute;border-radius:50%;border:1px solid var(--line);inset:0;}
.rec-orb .ring.r2{inset:-16px;border-color:var(--line-2);}
.rec-orb.on .ring{border-color:var(--ember);animation:ripple 1.6s ease-out infinite;}
.rec-orb.on .ring.r2{animation:ripple 1.6s ease-out infinite .5s;}
@keyframes ripple{0%{transform:scale(0.92);opacity:.7;}100%{transform:scale(1.3);opacity:0;}}
.rec-core{width:122px;height:122px;border-radius:50%;border:1.5px solid var(--ember);background:radial-gradient(circle at 50% 38%,rgba(226,97,58,0.2),rgba(226,97,58,0.04));color:var(--ink);font-family:'JetBrains Mono';font-size:0.62rem;letter-spacing:0.08em;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.5;transition:all .25s;z-index:2;}
.rec-core.on{background:var(--ember);color:#180c07;font-weight:600;}
.prog-track{width:100%;max-width:300px;height:3px;background:var(--line);border-radius:99px;overflow:hidden;margin:0 auto;}
.prog-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--steel),var(--ember));transition:width .1s linear;}
.rec-time{font-family:'Fraunces';font-size:2.2rem;text-align:center;}

/* артефакт-квитанция */
.art-thumb{width:100%;aspect-ratio:3/4;background:#000;border-radius:16px;border:1px solid var(--line);overflow:hidden;box-shadow:var(--elev);}
.art-thumb img,.art-thumb canvas{width:100%;height:100%;object-fit:cover;display:block;}
.receipt{font-family:'JetBrains Mono';font-size:0.72rem;letter-spacing:0.03em;}
.receipt .k{color:var(--faint);font-size:0.54rem;letter-spacing:0.12em;text-transform:uppercase;}
.receipt .v{color:var(--ink);font-size:1.4rem;font-family:'Fraunces';}
.coord-mini{width:120px;height:120px;flex:none;}

/* ПОТОК */
#ether-card{max-width:440px;width:100%;text-align:center;}
.ether-stat{font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.34em;text-transform:uppercase;color:var(--mut);margin-bottom:28px;}
.now-line{font-family:'JetBrains Mono';font-size:0.64rem;color:var(--ink-dim);margin-top:18px;min-height:1.2em;}
.now-line .dot{color:var(--ember);}
.ether-hint{font-size:0.74rem;color:var(--faint);margin-top:18px;font-style:italic;}

/* панель узла (архив) */
#node-panel{position:fixed;bottom:1.4rem;right:1.4rem;width:300px;max-width:calc(100vw - 2rem);z-index:30;padding:1.4rem;transform:translateY(16px);opacity:0;transition:all .3s;display:none;}
#node-panel.on{transform:translateY(0);opacity:1;display:block;}
#node-panel h3{font-family:'Fraunces';font-size:1.05rem;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px;word-break:break-word;}
.np-dsp{font-family:'JetBrains Mono';font-size:0.66rem;display:flex;justify-content:space-between;background:rgba(0,0,0,0.4);border-radius:9px;padding:0.7rem 0.9rem;margin-bottom:14px;color:var(--ink-dim);}
.archive-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:none;}
.legend{position:fixed;bottom:1.4rem;left:1.4rem;z-index:25;pointer-events:none;font-family:'JetBrains Mono';font-size:0.54rem;letter-spacing:0.06em;color:var(--mut);display:flex;flex-direction:column;gap:5px;}
.legend i{display:inline-block;width:14px;height:2px;margin-right:7px;vertical-align:middle;}

/* КУРАТОР */
.cur-sec{margin-bottom:18px;}
.cur-sec h4{font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.12em;text-transform:uppercase;border-bottom:1px solid var(--line);padding-bottom:9px;margin-bottom:16px;color:var(--ink-dim);}
.cur-sec h4.ember{color:var(--ember-soft);} .cur-sec h4.steel{color:var(--steel);}
.ctl-row{margin-bottom:14px;}
.ctl-row .top{display:flex;justify-content:space-between;align-items:baseline;font-family:'JetBrains Mono';font-size:0.62rem;color:var(--mut);margin-bottom:7px;}
.ctl-row .top .val{color:var(--ink);}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:2px;background:var(--line);border-radius:2px;outline:none;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border-radius:50%;background:var(--ember);cursor:pointer;border:3px solid var(--void);box-shadow:0 0 0 1px var(--ember),0 3px 9px -2px rgba(196,102,74,0.6);transition:transform .15s var(--ease);}
input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2);}
input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--ember);border:3px solid var(--void);cursor:pointer;}
.eq-bank{display:flex;justify-content:space-between;gap:6px;align-items:end;}
.eq-band{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;}
.eq-band input{-webkit-appearance:slider-vertical;writing-mode:vertical-lr;direction:rtl;width:22px;height:96px;}
.eq-band .lab{font-family:'JetBrains Mono';font-size:0.5rem;color:var(--faint);}

/* тост */
#sys-toast{position:fixed;left:50%;bottom:calc(1.8rem + var(--sb));transform:translateX(-50%) translateY(22px);z-index:9000;background:rgba(30,30,35,0.9);color:var(--ink);border:1px solid var(--line);padding:0.85rem 1.3rem;border-radius:0.95rem;font-size:0.78rem;opacity:0;transition:all .34s var(--ease);pointer-events:none;max-width:90vw;text-align:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow);}
#sys-toast.show{opacity:1;transform:translateX(-50%);}
.spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(24,12,7,0.3);border-top-color:#180c07;border-radius:50%;animation:rot .7s linear infinite;vertical-align:-2px;}
@keyframes rot{to{transform:rotate(360deg);}}

@media(max-width:600px){
  /* меньше «воздуха» сверху — навбар тоньше, экран начинается выше */
  nav{padding:calc(0.75rem + var(--st)) 1.1rem 0.7rem;}
  .nav-links{gap:0.7rem;}
  .nav-btn{font-size:0.56rem;}
  .sys-badge{display:none;}                 /* декоративный статус — прячем, чтобы не теснить экран */
  .screen-scroll{padding:calc(4.1rem + var(--st)) 1rem calc(1.4rem + var(--sb));}
  /* круг восприятия не выше доступной высоты — шаг помещается без прокрутки */
  #iso-pad{max-width:min(380px,52vh);}
  .wz-head{margin-bottom:4px;}
  .wz-title{font-size:clamp(1.5rem,7vw,2rem);}
  .wz-sub{margin-bottom:16px;}
  .wz-prog{margin-bottom:14px;}
  .wz-card{padding:1.1rem 1rem 1rem;margin-bottom:1.1rem;}
  .wz-hint{font-size:0.8rem;} .wz-note{font-size:0.66rem;margin-bottom:.7rem;}
  .iso-read #iso-words{font-size:0.94rem;}
  /* запись компактнее */
  .rec-orb{width:124px;height:124px;}
  .rec-core{width:100px;height:100px;}
  .rec-time{font-size:1.7rem;}
  .consent-row{font-size:0.76rem;}
  /* узловая панель и легенда */
  #node-panel{left:0.8rem;right:0.8rem;width:auto;bottom:calc(5.5rem + var(--sb));max-height:46dvh;overflow-y:auto;}
  .legend{display:none;}
  /* кнопки чуть ниже — плотнее на телефоне */
  .btn-primary,.btn-secondary{padding:0.85rem 1.4rem;}
  /* шаг 2 (запись/согласие): сжимаем вертикаль, чтобы влезал без прокрутки */
  .consent-row{margin-bottom:0.55rem;}
  .capture-tabs{margin-bottom:0.9rem;}
  #node-note{height:52px!important;margin-bottom:1rem!important;}
  #node-name{margin-bottom:0.7rem!important;}
}
@media(max-width:600px) and (max-height:760px){
  /* короткий телефон: шаг 2 ещё плотнее */
  #node-note{height:44px!important;}
  .rec-orb{width:104px;height:104px;}
  .rec-core{width:84px;height:84px;}
  .rec-time{margin:0.7rem 0 0.5rem!important;}
  .glass[class*="gate"],.wz-card{padding:1rem 1rem 0.9rem!important;}
}
@media(max-width:600px) and (max-height:720px){
  /* короткие экраны: ещё компактнее, круг меньше */
  #iso-pad{max-width:min(330px,46vh);}
  .wz-hint{margin-bottom:.3rem;} .wz-note{margin-bottom:.5rem;}
  .art-thumb-big{max-width:min(300px,38vh);}
  .receipt-title{margin-bottom:1rem;}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.01ms!important;}}

/* ---------- ISO 12913 шкалы ---------- */
.iso-attr{margin-bottom:16px;}
.iso-attr .top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px;}
.iso-attr .nm{font-family:'Fraunces';font-size:1.08rem;font-weight:500;}
.iso-attr .ax{font-family:'JetBrains Mono';font-size:0.5rem;letter-spacing:0.06em;padding:2px 6px;border-radius:5px;text-transform:uppercase;margin-left:8px;vertical-align:middle;}
.ax.p{color:var(--ember);border:1px solid rgba(226,97,58,.4);} .ax.e{color:var(--steel);border:1px solid rgba(111,179,196,.4);}
.iso-scale{display:flex;gap:6px;}
.iso-scale button{flex:1;height:44px;border:1px solid var(--line);border-radius:10px;font-family:'JetBrains Mono';font-size:0.82rem;color:var(--mut);transition:all .15s;}
.iso-scale button:hover{border-color:var(--ink);color:var(--ink);transform:translateY(-1px);}
.iso-scale button[aria-pressed="true"]{background:var(--ember);border-color:var(--ember);color:#180c07;font-weight:700;}
.iso-ends{display:flex;justify-content:space-between;font-size:0.6rem;color:var(--faintest);margin-top:4px;font-family:'JetBrains Mono';letter-spacing:0.04em;}
.iso-mini-row{display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:8px;backdrop-filter:blur(10px);}
.iso-mini-row canvas{width:92px;height:92px;flex:none;}
.iso-mini-row .rd{font-family:'JetBrains Mono';font-size:0.72rem;color:var(--mut);line-height:1.7;}
.iso-mini-row .rd b{color:var(--ember);} .iso-mini-row .rd i{color:var(--steel);font-style:normal;}

/* ---------- захват: запись + загрузка ---------- */
.capture-tabs{display:flex;gap:8px;margin-bottom:1.4rem;}
.cap-tab{flex:1;padding:0.7rem;border:1px solid var(--line);border-radius:10px;font-family:'JetBrains Mono';font-size:0.62rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--mut);transition:all .18s;}
.cap-tab.on{border-color:var(--ember);color:var(--ember-soft);background:rgba(226,97,58,0.06);}
input[type=file]{display:none;}
.upload-drop{border:1px dashed var(--line);border-radius:14px;padding:2rem 1rem;text-align:center;cursor:pointer;transition:all .2s;}
.upload-drop:hover{border-color:var(--steel);background:rgba(111,179,196,0.05);}
.upload-drop .ic{font-size:1.6rem;color:var(--steel);}
.upload-drop .t{font-family:'JetBrains Mono';font-size:0.7rem;letter-spacing:0.06em;color:var(--ink-dim);margin-top:8px;}
.upload-drop .s{font-size:0.64rem;color:var(--faint);margin-top:4px;}

/* ---------- ПОТОК: поле дрейфа ---------- */
#ether-field{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;}
.ether-overlay{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:12px;padding:0 16px calc(1.5rem + var(--sb));pointer-events:none;}
.ether-overlay .now-line{margin:0;}
.ether-bar{pointer-events:auto;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;align-items:center;max-width:100%;background:rgba(16,16,20,0.58);border:1px solid var(--line);border-radius:1.35rem;padding:9px;backdrop-filter:blur(24px) saturate(1.25);-webkit-backdrop-filter:blur(24px) saturate(1.25);box-shadow:0 34px 80px -38px rgba(0,0,0,0.92),inset 0 1px 0 rgba(241,236,226,0.05);}
.ether-ctl{height:46px;border-radius:11px;border:1px solid var(--line);padding:0 18px;font-family:'JetBrains Mono';font-size:0.64rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink);transition:all .18s;display:flex;align-items:center;gap:7px;flex:0 0 auto;}
.ether-ctl span{white-space:nowrap;}
.ether-ctl:hover{border-color:var(--ink);}
.ether-ctl.on{background:rgba(226,97,58,0.16);border-color:var(--ember);color:var(--ember-soft);}
.ether-ctl.play{background:var(--ink);color:var(--void);border:none;}
.ether-ctl.play.on{background:var(--ember);color:#180c07;}
.ether-ctl:disabled{opacity:0.35;pointer-events:none;}
.ether-hint-f{pointer-events:none;position:absolute;top:calc(5rem + var(--st));left:0;right:0;text-align:center;font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.06em;color:var(--faint);padding:0 1rem;}

/* ---------- описание ноды ---------- */
.np-desc{font-size:0.82rem;color:var(--ink-dim);margin-bottom:12px;font-style:italic;line-height:1.45;}
.net-hint{position:fixed;top:calc(5rem + var(--st));left:0;right:0;text-align:center;font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.08em;color:var(--faint);z-index:24;pointer-events:none;}
.net-hint>*{display:inline-block;background:rgba(10,10,12,0.5);backdrop-filter:blur(7px);padding:5px 14px;border-radius:99px;border:1px solid rgba(236,230,218,0.06);}
.net-hint .collective{background:rgba(10,10,12,0.55);margin-top:7px;}
.coord-line{font-family:'JetBrains Mono';font-size:0.72rem;color:var(--mut);margin-bottom:1rem;}
.coord-line b{color:var(--ember);} .coord-line i{color:var(--steel);font-style:normal;}

/* ---------- устойчивость вёрстки к длинному тексту ---------- */
.nav-links{flex-wrap:wrap;justify-content:flex-end;max-width:70vw;}
.brand{min-width:0;flex-shrink:0;}
.btn-primary,.btn-secondary,.btn-ember,.btn-warn,.ether-ctl,.cap-tab,.nav-btn{white-space:normal;height:auto;line-height:1.3;overflow-wrap:break-word;word-break:normal;hyphens:none;}
.cap-tab span,.nav-btn span{overflow-wrap:break-word;word-break:normal;}
.btn-primary,.btn-secondary{min-height:46px;}
.ether-ctl{min-height:46px;}
.modal{scrollbar-gutter:stable;}
.iso-read{min-height:48px;}
.net-hint{min-height:2.4em;}
#auth-wrap h1{overflow-wrap:anywhere;}
#auth-wrap .sub,#auth-wrap .desc,.eyebrow,.wz-title,.wz-sub,.fstep .lead,.ether-hint-f,.now-line,.np-desc,#np-id,.legend span,.metric .v,.receipt .v,.coord-line{overflow-wrap:anywhere;word-break:break-word;}
.now-line{max-width:92vw;}
.metric{min-width:0;}
.metric .v,.receipt .v{font-size:clamp(1rem,4vw,1.7rem);}
.legend{max-width:48vw;}
.eq-band .lab{white-space:nowrap;}

/* поля редактирования текстов (куратор) */
.tx-field{margin-bottom:12px;}
.tx-field label{display:block;font-family:'JetBrains Mono';font-size:0.54rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--faint);margin-bottom:5px;}
.tx-field .inp{font-size:0.8rem;}
.tx-group{margin-bottom:8px;}
.tx-group > .tx-head{font-family:'JetBrains Mono';font-size:0.58rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--ember-soft);margin:16px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line);}

/* ---------- согласие и политика (персональные данные) ---------- */
.consent-row{display:flex;gap:11px;align-items:flex-start;font-size:0.8rem;color:var(--ink-dim);line-height:1.45;margin-bottom:0.8rem;cursor:pointer;overflow-wrap:anywhere;}
.consent-row input{margin-top:2px;width:19px;height:19px;accent-color:var(--ember);flex:none;cursor:pointer;}
.linkish-sm{background:none;border:none;color:var(--steel);font-size:0.7rem;letter-spacing:0.02em;border-bottom:1px dotted var(--steel-dim);padding-bottom:1px;}
.linkish-sm:hover{color:var(--ink);}
.glass.is-locked{opacity:0.45;filter:grayscale(0.3);pointer-events:none;transition:opacity .3s;}
.modal-backdrop{position:fixed;inset:0;z-index:200;background:rgba(4,4,7,0.62);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;padding:1.4rem;}
.modal{max-width:540px;width:100%;max-height:84vh;overflow-y:auto;padding:2rem 1.9rem 1.7rem;display:flex;flex-direction:column;}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:1rem;}
.modal-head h3{font-size:1.5rem;overflow-wrap:anywhere;}
.modal-body{font-size:0.86rem;color:var(--ink-dim);line-height:1.6;overflow-wrap:anywhere;white-space:pre-line;}
.org-contact{margin-top:1.1rem;padding:0.85rem 1rem;border:1px solid var(--line);border-radius:11px;background:rgba(236,230,218,0.04);font-size:0.8rem;color:var(--ink-dim);line-height:1.5;white-space:pre-line;overflow-wrap:anywhere;height:auto;}

/* ---------- PAQ-оценки ISO/TS 12913-3 ---------- */
.paq-form{display:flex;flex-direction:column;gap:11px;}
.paq-row{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.paq-name{font-family:'Spline Sans',sans-serif;font-size:0.86rem;color:var(--ink-dim);flex:1;min-width:0;overflow-wrap:anywhere;}
.paq-scale{display:flex;gap:7px;flex:none;}
.paq-dot{width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:rgba(0,0,0,0.25);transition:all .15s;cursor:pointer;}
.paq-dot:hover{border-color:var(--ink-dim);transform:scale(1.12);}
.paq-dot.on{background:var(--ember);border-color:var(--ember);box-shadow:0 0 0 3px rgba(192,101,75,0.18);}
@media(max-width:420px){ .paq-dot{width:19px;height:19px;} .paq-name{font-size:0.8rem;} }

/* ---------- карточка узла: частотный образ ---------- */
.np-spec{width:100%;height:84px;border-radius:10px;border:1px solid var(--line);background:#000;margin-bottom:12px;display:block;}
.np-row{display:flex;justify-content:space-between;font-family:'JetBrains Mono';font-size:0.62rem;color:var(--mut);margin-top:4px;}

/* ---------- читаемый результат круга восприятия ---------- */
.iso-read{margin-top:12px;text-align:center;display:flex;flex-direction:column;gap:4px;}
.wz-card{padding:1.4rem 1.3rem 1.2rem;margin-bottom:1.3rem;}
.wz-hint{font-size:0.84rem;color:var(--ink-dim);margin-bottom:.4rem;text-align:center;line-height:1.5;}
.wz-note{font-size:0.7rem;color:var(--faint);margin-bottom:.9rem;text-align:center;line-height:1.5;}
#iso-pad{width:100%;aspect-ratio:1/1;max-width:520px;display:block;margin:0 auto;touch-action:none;cursor:crosshair;}
.iso-read #iso-words{font-family:'Fraunces',serif;font-size:1.02rem;color:var(--ink);}
.iso-read .iso-pe{font-family:'JetBrains Mono',monospace;font-size:0.66rem;color:var(--mut);}
.iso-read .iso-pe b{color:var(--ember-soft);} .iso-read .iso-pe i{color:var(--steel);font-style:normal;}

/* ---------- лаконичная карточка-след ---------- */
.receipt-wrap{max-width:440px;width:100%;text-align:center;}
.receipt-title{font-size:2.1rem;margin-bottom:1.6rem;letter-spacing:-0.02em;}
.art-thumb-big{margin:0 auto 0.85rem;width:100%;max-width:340px;border-radius:1.1rem;overflow:hidden;border:1px solid var(--line-2);background:#000;box-shadow:0 30px 70px -34px rgba(0,0,0,0.7);}
.art-thumb-big img{width:100%;display:block;}
.rc-download{font-family:'JetBrains Mono';font-size:0.6rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--steel);text-decoration:none;border-bottom:1px dotted var(--steel-dim);padding-bottom:1px;display:inline-block;margin-bottom:1.6rem;}
.rc-download:hover{color:var(--ink);}
.rc-memory{font-family:'Fraunces',serif;font-style:italic;font-size:1rem;line-height:1.55;color:var(--ink-dim);margin:0 auto 1.8rem;max-width:380px;overflow-wrap:anywhere;}
.rc-actions{display:flex;gap:12px;}
@media(max-width:520px){ .receipt-title{font-size:1.55rem;} .rc-memory{font-size:0.92rem;} }

/* ---------- видимое коллективное авторство в потоке ---------- */
.net-hint .collective{display:inline-block;margin-top:6px;font-size:0.56rem;color:var(--ember-soft);letter-spacing:0.06em;opacity:0.9;}

/* ---------- заметка слушателя и дата в карточке узла ---------- */
.np-note{font-family:'Fraunces',serif;font-style:italic;font-size:0.92rem;line-height:1.45;color:var(--ink-dim);margin:2px 0 12px;overflow-wrap:anywhere;}
.np-meta{font-family:'JetBrains Mono',monospace;font-size:0.56rem;letter-spacing:0.04em;color:var(--faint);margin-top:8px;}

/* ---------- читаемость: крупнее мелкие подписи (десктоп и мобайл) ---------- */
.label-xs{font-size:0.62rem;}
.eyebrow{font-size:0.6rem;}
.ether-stat{font-size:0.64rem;}
.now-line{font-size:0.74rem;}
.ether-hint{font-size:0.8rem;}
.ether-hint-f,.net-hint{font-size:0.66rem;}
.legend{font-size:0.6rem;}
.receipt .k{font-size:0.6rem;}
.np-dsp{font-size:0.72rem;}
.np-row{font-size:0.68rem;}
.np-meta{font-size:0.62rem;}
.np-desc{font-size:0.86rem;}
.coord-line{font-size:0.78rem;}
.cap-tab{font-size:0.66rem;}
.q-title{font-size:0.66rem;}
.wz-sub{font-size:0.92rem;}
.wz-note{font-size:0.74rem;}
.tx-field label{font-size:0.6rem;}
.cur-sec h4{font-size:0.66rem;}
.ctl-row .top{font-size:0.66rem;}
.eq-band .lab{font-size:0.56rem;}
.nav-btn{font-size:0.66rem;}
.ether-ctl{font-size:0.68rem;}
.iso-read .iso-pe{font-size:0.72rem;}
.iso-ends{font-size:0.64rem;}
.rc-download{font-size:0.66rem;}
.upload-drop .t{font-size:0.74rem;} .upload-drop .s{font-size:0.7rem;}

@media(max-width:600px){
  /* на телефоне физический размер мал — держим подписи различимыми */
  .nav-btn{font-size:0.6rem;}
  .now-line{font-size:0.72rem;}
  .net-hint,.ether-hint-f{font-size:0.64rem;}
  .ctl-row .top{font-size:0.64rem;}
  .legend{font-size:0.58rem;}
  .wz-note{font-size:0.7rem;}
  .consent-row{font-size:0.8rem;}
  /* транспорт потока: компактнее, чтобы умещался в 2 ряда, а не тянулся столбиком */
  .ether-bar{gap:7px;padding:8px 9px;width:100%;max-width:420px;}
  .ether-ctl{flex:1 1 calc(50% - 4px);min-width:0;padding:0 10px;height:44px;font-size:0.6rem;letter-spacing:0.04em;justify-content:center;}
  .ether-ctl.play{flex-basis:calc(50% - 4px);}
}

/* ============================================================
   СЛОЙ СОВРЕМЕННОСТИ — глубина, типографика, микровзаимодействия
   (поверх строгой основы; идентичность и палитра не меняются)
   ============================================================ */
/* типографика: увереннее заголовки, спокойнее набор */
#auth-wrap h1,.wz-title{letter-spacing:-0.035em;text-wrap:balance;}
#auth-wrap .desc,.wz-sub,.ether-hint,.now-line,.np-desc{text-wrap:pretty;}
#auth-wrap .desc{font-size:1.06rem;line-height:1.72;font-weight:300;max-width:40ch;}

/* стекло-панель: мягкая многослойная глубина + верхний световой кант + лёгкий градиент */
.glass{box-shadow:var(--elev);border-color:rgba(241,236,226,0.07);border-radius:1.4rem;background:linear-gradient(180deg,rgba(25,25,30,0.62),rgba(15,15,19,0.8));}

/* единая кривая перехода для интерактивных элементов */
.btn-primary,.btn-secondary,.btn-ember,.btn-warn,.tag,.nav-btn,.inp,.ether-ctl,.cap-tab,.rec-core{transition-timing-function:var(--ease);}

/* мягкое янтарное свечение фокуса на полях ввода */
.inp:focus{border-color:var(--ember);box-shadow:0 0 0 4px rgba(196,102,74,0.14);}

/* активная навигация — мягкое свечение подчёркивания */
.nav-btn.active::after{box-shadow:0 0 10px var(--ember);}

/* прогресс записи и орб — мягкое свечение */
.prog-fill{box-shadow:0 0 12px rgba(192,101,75,0.5);}
.rec-core.on{box-shadow:0 0 42px -4px rgba(192,101,75,0.7);}

/* тонкий подъём фокусных карточек при наведении (где есть мышь) */
@media(hover:hover){
  #ether-card,#node-panel{transition:transform .3s var(--ease-out),box-shadow .3s var(--ease-out);}
}

@media(prefers-reduced-motion:reduce){
  body::before{display:none;}
}

/* ============================================================
   ПЛАТФОРМА — каталожно-инструментальный слой
   Усиливает строгую основу: типографика, система меток,
   регистрационные засечки, точный транспорт. Палитра и
   концепция не меняются.
   ============================================================ */
:root{ --r-sm:10px; --r-md:13px; --r-lg:16px; }

/* навигация как masthead обсерватории — постоянная волосяная линия снизу */
nav{border-bottom:none;background:linear-gradient(to bottom,rgba(8,8,10,0.92),rgba(8,8,10,0.42) 70%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);}
.brand .bn{letter-spacing:-0.01em;} .brand .bx{color:var(--mut);}
.nav-btn{letter-spacing:0.16em;} .nav-btn.active::after{height:1.5px;box-shadow:0 0 10px var(--ember);}

/* единый заголовок-«каталожная запись» (опрос, куратор) — волосяная линия под шапкой */
.wz-head{position:relative;padding-bottom:1.05rem;margin-bottom:1.5rem;}
.wz-head::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(360px,82%);height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent);}
.wz-step{display:inline-block;letter-spacing:0.32em;}

/* регистрационные засечки на ключевой карточке опроса — перекличка со «следом» */
.wz-card{position:relative;}
.wz-card::before,.wz-card::after{display:none;}

/* перцептивный прибор — точнее набор результата */
.iso-read #iso-words{letter-spacing:-0.01em;}
.iso-read .iso-pe{letter-spacing:0.04em;}

/* транспорт потока — точный «пульт» */
.ether-bar{border-radius:1.35rem;}
.ether-ctl{border-radius:var(--r-md);letter-spacing:0.1em;}
.ether-ctl.play{box-shadow:0 7px 22px -9px rgba(236,230,218,0.45);}
.ether-ctl.play.on{box-shadow:0 9px 26px -8px rgba(192,101,75,0.6);}
.net-hint .collective{color:var(--mut);}

/* заголовки разделов — с ведущей засечкой-маркером (редакционный приём) */
.cur-sec h4::before,.tx-group > .tx-head::before{content:none;}

/* уверенный editorial набор заголовков */
#auth-wrap h1{letter-spacing:-0.04em;}
.receipt-title,.modal-head h3{letter-spacing:-0.02em;text-wrap:balance;}
.modal-head h3{font-family:'Fraunces',serif;}

/* единый радиус полей/тегов */
.inp{border-radius:var(--r-md);} .tag{border-radius:var(--r-sm);} .cap-tab{border-radius:var(--r-md);}

@media(max-width:600px){
  .wz-head{margin-bottom:1rem;padding-bottom:0.8rem;}
  .wz-head::after{width:min(280px,84%);}
  .wz-card::before,.wz-card::after{width:11px;height:11px;top:9px;left:9px;}
  .wz-card::after{top:auto;left:auto;bottom:9px;right:9px;}
}

/* ============================================================
   СЛОЙ shadcn / Tailwind / Lucide / Framer (бессборочно)
   Токены и эстетика этих библиотек, перенесённые на тёплую
   палитру «Отзвука». Иконки Lucide — встроенный SVG.
   ============================================================ */
:root{
  /* shadcn-совместимые семантические токены, привязанные к нашей палитре */
  --background:var(--void); --foreground:var(--ink);
  --card:var(--panel-2); --muted-foreground:var(--mut);
  --border:var(--line); --input:rgba(236,230,218,0.16);
  --ring:var(--ember-soft); --ring-offset:var(--void);
  --radius:1rem; --r-sm:calc(var(--radius) - 0.36rem); --r-md:calc(var(--radius) - 0.18rem); --r-lg:var(--radius);
  --ease-spring:cubic-bezier(.34,1.4,.5,1);
}

/* иконки Lucide */
.ic{display:inline-block;vertical-align:-0.18em;flex:0 0 auto;opacity:0.95}
.btn-primary .ic,.btn-ember .ic{opacity:1}

/* кнопки в стиле shadcn: иконка+подпись в ряд, скругление, тактильное нажатие */
.btn-primary,.btn-secondary,.btn-ember,.btn-warn{display:flex;align-items:center;justify-content:center;gap:0.55rem;border-radius:var(--r-md)}
.ether-ctl{justify-content:center;border-radius:var(--r-md)}
.btn-secondary:hover{background:rgba(241,236,226,0.1);border-color:transparent}
.btn-primary:active,.btn-ember:active,.btn-secondary:active,.btn-warn:active,.ether-ctl:active{transform:scale(0.975)}

/* кольцо фокуса shadcn (видно только с клавиатуры) */
.btn-primary,.btn-secondary,.btn-ember,.btn-warn,.ether-ctl,.nav-btn,.tag,.cap-tab,.linkish-sm,.inp,.role-chip{outline:none}
.btn-primary:focus-visible,.btn-secondary:focus-visible,.btn-ember:focus-visible,.btn-warn:focus-visible,.ether-ctl:focus-visible,.nav-btn:focus-visible,.tag:focus-visible,.cap-tab:focus-visible,.linkish-sm:focus-visible,.inp:focus-visible{box-shadow:0 0 0 2px var(--ring-offset),0 0 0 4px var(--ring)}

/* бейдж роли — пилюля shadcn */
.role-chip{border-radius:999px;border-color:var(--border)}

/* ссылка-приватность с иконкой: подчёркиваем только текст */
.linkish-sm{display:inline-flex;align-items:center;gap:0.4rem;border-bottom:none}
.linkish-sm span{border-bottom:1px dotted var(--steel-dim);padding-bottom:1px}

/* поля ввода — радиус shadcn */
.inp{border-radius:var(--r-md)}

/* движение в духе Framer: всплытие диалога (пружина) и затемнение фона */
.modal-backdrop{animation:scFade .2s ease both}
.modal{animation:scPop .3s var(--ease-spring) both}
@keyframes scFade{from{opacity:0}to{opacity:1}}
@keyframes scPop{from{opacity:0;transform:scale(.965) translateY(8px)}to{opacity:1;transform:none}}

@media(prefers-reduced-motion:reduce){ .modal-backdrop,.modal{animation:none} }

/* вкладки записи — сегментированный контрол shadcn (Tabs) */
.capture-tabs{padding:4px;gap:4px;background:rgba(236,230,218,0.05);border:1px solid var(--border);border-radius:var(--r-md)}
.cap-tab{border:none;background:transparent;border-radius:calc(var(--r-md) - 3px);padding:0.55rem 0.7rem;display:inline-flex;align-items:center;justify-content:center;gap:0.4rem;color:var(--mut)}
.cap-tab.on{background:var(--panel-2);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,0.45)}

/* иконка зоны загрузки (Lucide вместо текстовой стрелки) */
.upload-drop .up-ic{color:var(--steel);line-height:0;margin-bottom:0.5rem}
.upload-drop:hover .up-ic{color:var(--ink-dim)}

/* крестик закрытия модалки */
.flow-close{display:inline-flex;align-items:center;justify-content:center;color:var(--mut);transition:color .18s}
.flow-close:hover{color:var(--ink)}

/* ссылка-скачивание следа — иконка+подпись в ряд */
.rc-download{display:inline-flex;align-items:center;justify-content:center;gap:0.5rem}
