:root{
  --bg:#070a0e;--bg2:#0b1015;--panel:#101820;--panel2:#151f29;--line:#24313d;--line2:#334454;
  --text:#edf1f4;--muted:#94a4b2;--faint:#677887;--gold:#d4ad62;--blue:#8fb7d4;--green:#92c69c;--red:#d87676;--orange:#e39165;
  --shadow:0 18px 50px rgba(0,0,0,.35);--radius:18px;--radius-sm:12px;
}
*{box-sizing:border-box} html{background:var(--bg)} body{margin:0;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:
radial-gradient(circle at 15% 0%,rgba(67,94,118,.20),transparent 34%),radial-gradient(circle at 90% 12%,rgba(112,82,47,.16),transparent 28%),linear-gradient(180deg,#090d12,#07090c 55%,#050709);min-height:100vh}
button,input,select,textarea{font:inherit} button{cursor:pointer}.hidden{display:none!important}
a{color:inherit}.app-shell{min-height:100vh}.topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid rgba(255,255,255,.07);background:rgba(7,10,14,.82);backdrop-filter:blur(16px);position:sticky;top:0;z-index:30}.brand{display:flex;gap:12px;align-items:center;font-weight:800;letter-spacing:.04em}.brand-mark{width:34px;height:34px;border-radius:10px;border:1px solid #6f5d3a;background:linear-gradient(145deg,#221e16,#0d1115);display:grid;place-items:center;color:var(--gold);box-shadow:inset 0 0 20px rgba(212,173,98,.08)}.brand small{display:block;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.13em;margin-top:2px}.nav-actions{display:flex;gap:8px;align-items:center}.container{max-width:1180px;margin:0 auto;padding:38px 24px 72px}.hero{display:grid;grid-template-columns:1.25fr .75fr;gap:28px;align-items:stretch;margin-top:18px}.hero-card{padding:42px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(135deg,rgba(21,31,41,.88),rgba(10,15,20,.88));box-shadow:var(--shadow);position:relative;overflow:hidden}.hero-card:after{content:"";position:absolute;width:260px;height:260px;border:1px solid rgba(212,173,98,.16);border-radius:50%;right:-100px;top:-100px;box-shadow:0 0 80px rgba(212,173,98,.06)}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--gold);font-weight:800}.hero h1{font-size:clamp(34px,5vw,58px);line-height:.98;margin:18px 0 18px;letter-spacing:-.04em;max-width:760px}.hero p{color:var(--muted);font-size:16px;line-height:1.7;max-width:700px}.hero-side{display:grid;gap:14px}.status-card,.mini-card,.panel{border:1px solid var(--line);background:rgba(16,24,32,.86);border-radius:var(--radius);box-shadow:var(--shadow)}.status-card{padding:24px}.status-card h3{margin:0 0 9px;font-size:16px}.status-list{display:grid;gap:9px;margin-top:18px}.status-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--muted)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px}.dot.green{background:var(--green);box-shadow:0 0 12px rgba(146,198,156,.45)}.dot.gold{background:var(--gold)}.dot.red{background:var(--red)}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.btn{border:1px solid var(--line2);background:#18232d;color:var(--text);border-radius:11px;padding:11px 15px;font-weight:700;transition:.18s;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.btn:hover{transform:translateY(-1px);border-color:#516577;background:#1b2a36}.btn.primary{background:linear-gradient(135deg,#c99d4d,#9e7534);border-color:#d6ae67;color:#0b0d0f}.btn.primary:hover{background:linear-gradient(135deg,#d7ad60,#aa8040)}.btn.ghost{background:transparent}.btn.danger{border-color:#683f45;color:#f1b2b2;background:#231318}.btn.small{padding:8px 10px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.section-title{font-size:25px;margin:38px 0 18px;letter-spacing:-.02em}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.feature-card{padding:22px}.feature-card h3{margin:12px 0 7px;font-size:17px}.feature-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.6}.feature-icon{font-size:20px;color:var(--gold)}.tag{display:inline-flex;align-items:center;border:1px solid var(--line2);border-radius:999px;padding:5px 9px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:rgba(255,255,255,.02)}.tag.gold{color:#f0d598;border-color:#6c5731;background:#201a10}.tag.green{color:#b9e4c1;border-color:#365b3d;background:#0e1d13}.tag.red{color:#efb5b5;border-color:#65383d;background:#211114}.tag.blue{color:#bad8ec;border-color:#35586f;background:#0f1b24}.panel{padding:24px}.panel-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;margin-bottom:18px}.panel-head h2,.panel-head h3{margin:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:#b8c5cf;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line2);background:#0c1319;color:var(--text);border-radius:10px;padding:11px 12px;outline:none}.field textarea{min-height:95px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#70889c;box-shadow:0 0 0 3px rgba(112,136,156,.10)}.divider{height:1px;background:var(--line);margin:22px 0}.role-choice{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.role-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:#0d141a;cursor:pointer;transition:.15s;position:relative}.role-card:hover{border-color:#526779}.role-card.selected{border-color:var(--gold);box-shadow:0 0 0 2px rgba(212,173,98,.10)}.role-card.taken{opacity:.35;cursor:not-allowed}.role-card strong{display:block;margin:5px 0 7px}.role-card p{font-size:11px;color:var(--muted);margin:0;line-height:1.45}.dashboard-grid{display:grid;grid-template-columns:270px minmax(0,1fr);gap:18px;align-items:start}.sidebar{position:sticky;top:86px;display:grid;gap:12px}.side-card{padding:18px;border:1px solid var(--line);background:#0d141a;border-radius:14px}.profile-ring{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-weight:900;border:1px solid currentColor;background:#0b1015}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.stat{padding:10px;border:1px solid var(--line);border-radius:10px;background:#0b1218;text-align:center}.stat b{display:block;font-size:18px}.stat span{font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.scenario-rail{display:grid;gap:8px}.scenario-link{display:grid;grid-template-columns:28px 1fr auto;gap:9px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:11px;background:#0c1318;color:var(--muted);cursor:pointer}.scenario-link.active{border-color:#6c5731;color:var(--text);background:#17150f}.scenario-link.done{border-color:#32523b}.scenario-link.locked{opacity:.42;cursor:not-allowed}.num{width:25px;height:25px;border-radius:8px;display:grid;place-items:center;background:#17222b;font-size:11px;font-weight:800}.content-stack{display:grid;gap:16px}.brief{font-size:17px;line-height:1.7;color:#dce4ea}.objective{padding:16px;border-left:3px solid var(--gold);background:#151710;border-radius:0 11px 11px 0;color:#d9d3c2}.ability-list{display:grid;gap:9px}.ability{border:1px solid var(--line);padding:12px;border-radius:11px;background:#0b1218}.ability b{color:#e7d2a6}.ability p{margin:4px 0 0;font-size:12px;color:var(--muted);line-height:1.45}.roller{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:14px;border:1px dashed #3b4b59;border-radius:12px;background:#0a1015}.die{font-size:27px;font-weight:900;color:var(--gold);min-width:58px;text-align:center}.log-list{display:grid;gap:8px}.log-item{padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#0b1117;font-size:12px}.log-item .meta{color:var(--faint);font-size:10px;margin-bottom:5px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow:auto}.tab{border:0;background:transparent;color:var(--muted);padding:10px 11px;border-bottom:2px solid transparent;white-space:nowrap}.tab.active{color:var(--text);border-bottom-color:var(--gold)}.gm-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.6fr);gap:16px}.players{display:grid;gap:8px}.player-row{display:flex;gap:12px;align-items:center;border:1px solid var(--line);padding:10px 12px;border-radius:11px;background:#0b1218}.player-row .grow{flex:1}.gm-secret{border:1px solid #543b38;background:linear-gradient(180deg,#1d1112,#120d0e);padding:16px;border-radius:12px}.signal{padding:10px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:12px;color:#d6c6c7}.signal:last-child{border-bottom:0}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.gate-row{display:grid;grid-template-columns:58px 1fr 120px;gap:12px;align-items:center;padding:12px;border-bottom:1px solid var(--line)}.gate-row:last-child{border-bottom:0}.gate-row select{background:#0b1218;color:var(--text);border:1px solid var(--line2);padding:7px;border-radius:8px}.scale{display:flex;gap:7px;flex-wrap:wrap}.scale label{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#0d141a;font-size:11px}.anchor-text{font-size:11px;color:var(--faint);line-height:1.5;margin-top:6px}.wizard-steps{display:flex;gap:7px;overflow:auto;padding-bottom:6px}.wizard-step{min-width:42px;height:42px;border-radius:12px;border:1px solid var(--line);display:grid;place-items:center;color:var(--muted);background:#0c1319}.wizard-step.active{border-color:var(--gold);color:var(--gold)}.wizard-step.done{border-color:#3e6548;color:#a9d5b0}.counter-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.counter{display:flex;align-items:center;gap:7px}.counter button{width:31px;height:31px;border-radius:8px;border:1px solid var(--line2);background:#15202a;color:var(--text)}.counter b{width:28px;text-align:center}.talent-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.check-card{border:1px solid var(--line);padding:10px;border-radius:10px;background:#0c1318;font-size:12px}.check-card input{margin-right:7px}.sheet{display:grid;grid-template-columns:1fr 1fr;gap:14px}.sheet-box{border:1px solid var(--line);padding:16px;border-radius:12px;background:#0b1218}.sheet-box h4{margin:0 0 10px}.empty-power{border:1px dashed #4b3f2c;background:#15130e;color:#b7aa8b;padding:14px;border-radius:10px;font-style:italic}.toast{position:fixed;right:20px;bottom:20px;z-index:100;background:#17222b;border:1px solid #4b6172;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;font-weight:900}.copybox{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px dashed #6c5731;background:#17140e;border-radius:12px;padding:15px}.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:80;display:grid;place-items:center;padding:20px}.modal{width:min(640px,100%);max-height:88vh;overflow:auto;border:1px solid var(--line2);border-radius:18px;background:#0d141a;box-shadow:0 30px 90px #000;padding:24px}.footer-note{margin-top:42px;padding-top:20px;border-top:1px solid var(--line);color:var(--faint);font-size:11px;line-height:1.6}
@media(max-width:900px){.hero{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr}.dashboard-grid,.gm-layout{grid-template-columns:1fr}.sidebar{position:static}.role-choice{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr 1fr}.topbar{padding:0 15px}.container{padding:24px 15px 60px}.hero-card{padding:28px}.talent-grid{grid-template-columns:1fr 1fr}.sheet{grid-template-columns:1fr}}
@media(max-width:560px){.role-choice,.stat-grid,.metric-grid,.talent-grid{grid-template-columns:1fr 1fr}.hero h1{font-size:36px}.brand span.brand-text{display:none}.gate-row{grid-template-columns:52px 1fr}.gate-row select{grid-column:2}.panel{padding:17px}}

/* v0.2.3 — perfil humano: foco visível, alvos de toque, barra de etapas, erros e revisão (só nas telas .human-flow) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.human-flow :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.human-flow .field input:focus-visible,.human-flow .field select:focus-visible,.human-flow .field textarea:focus-visible{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.human-flow h2,.human-flow h3{overflow-wrap:anywhere}
.human-flow h3[tabindex="-1"]:focus{outline:none}
.human-flow .wizard-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;overflow:visible}
.human-flow .wizard-step{width:100%;min-width:0;height:44px;font:inherit;font-weight:800;cursor:pointer}
.human-flow .wizard-step[aria-disabled="true"]{cursor:not-allowed;opacity:.45}
.human-flow .counter button{width:44px;height:44px;font-size:18px}
.human-flow .counter b{min-width:28px}
.human-flow [aria-disabled="true"]{opacity:.45;cursor:not-allowed}
.human-flow .talent-fieldset{border:0;margin:0;padding:0}
.human-flow .talent-fieldset legend{padding:0;margin-bottom:12px}
.human-flow .check-card{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}
.human-flow .check-card input{width:20px;height:20px;margin:0;flex:none}
.field-error{margin-top:16px;padding:12px 14px;border:1px solid #65383d;background:#211114;color:#f3c4c4;border-radius:11px;font-size:13px}
.field-error ul{margin:6px 0 0;padding-left:18px}.field-error li{margin:4px 0}.field-error .btn{margin-left:6px}
.review{display:grid;gap:12px}
.review-section{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#0b1218}
.review-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.review-head h4{margin:0}
.review-head .btn{min-height:40px}
.review-list{display:grid;grid-template-columns:minmax(140px,34%) minmax(0,1fr);gap:8px 14px;margin:12px 0 0}
.review-list dt{color:var(--muted);font-size:12px}.review-list dd{margin:0}
.review-text{white-space:pre-wrap;overflow-wrap:anywhere}
.review-tags{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0}
@media(max-width:560px){
  .human-flow.panel{padding:16px}
  .human-flow .wizard-steps{gap:4px}
  .review-list{grid-template-columns:1fr;gap:2px}.review-list dd{margin-bottom:8px}
  .human-flow .actions .btn{flex:1 1 auto;min-height:44px}
}

/* v0.3.x — Primeiro Pesadelo: a história em primeiro plano; números pequenos e no canto */
.nightmare{max-width:760px;margin:0 auto}
.nm-head{position:sticky;top:68px;z-index:5;background:rgba(7,10,14,.92);backdrop-filter:blur(10px);padding:12px 0 10px;border-bottom:1px solid var(--line);margin-bottom:8px}
.nm-condition{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.nm-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:4px 10px;background:#0b1218}
.nm-chip b{color:var(--text);font-weight:800}
.nm-chip.nm-warn{color:#f3c4c4;border-color:#65383d;background:#211114}
.nm-bar{display:inline-block;width:48px;height:5px;border-radius:3px;background:#1d2a35;overflow:hidden}.nm-bar i{display:block;height:100%;background:var(--gold)}
.nm-story{font-size:17px;line-height:1.75;color:#dce4ea;padding:8px 0 18px}
.nm-story p{margin:0 0 14px;max-width:68ch}
.nm-scene-title{font-size:22px;margin:30px 0 14px;letter-spacing:-.01em;scroll-margin-top:150px}
.nm-scene-title small{display:block;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-top:4px}
.nm-spell{color:#e9d5a6;font-style:italic;letter-spacing:.02em}
.nm-you{color:var(--blue);font-size:15px}
.nm-freetext{font-style:italic}
.nm-roll{font-size:13px;line-height:1.5;color:var(--muted);border-left:2px solid var(--line2);padding-left:10px}
.nm-system{font-size:13px;color:var(--faint)}
.nm-old{opacity:.62}
.nm-act{border-top:1px solid var(--line);padding:18px 0 40px}
.nm-act h4{margin:0 0 12px;font-size:16px}
.nm-options{display:flex;flex-wrap:wrap;gap:8px}
.nm-options .btn{min-height:44px;text-align:left}
.nm-free{display:grid;gap:8px;margin-top:16px}
.nm-free label,.nm-manual label{font-size:12px;color:#b8c5cf;font-weight:700}
.nm-free textarea{min-height:70px;border:1px solid var(--line2);background:#0c1319;color:var(--text);border-radius:10px;padding:11px 12px;font:inherit;resize:vertical}
.nm-free .btn{justify-self:start;min-height:44px}
.nm-test,.nm-confirm,.nm-ending{border:1px solid var(--line2);border-radius:14px;padding:16px 18px;background:#0d141a}
.nm-test h4{margin:4px 0 6px}
.nm-target{font-size:15px}
.nm-manual{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.nm-manual input{width:110px;min-height:44px;border:1px solid var(--line2);background:#0c1319;color:var(--text);border-radius:10px;padding:8px 10px;font:inherit}
.nm-ending .nm-banner{font-size:20px;font-weight:800;color:#e9d5a6;margin:0 0 8px}
.nm-ending.nm-died .nm-banner{color:#f3a9a9}
.nm-judgment{color:var(--muted);font-style:italic}
@media(max-width:560px){.nm-head{top:68px}.nm-story{font-size:16px}.nm-options .btn{flex:1 1 100%}}

/* Fase B — julgamento do Feitiço e ficha do Adormecido */
.nm-sheet{margin:14px 0 6px;padding:16px 0 0;border-top:1px solid var(--line)}
.nm-sheet h3{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0 8px;font-size:22px;color:#e9d5a6}
.nm-truename{margin:0 0 8px}
.nm-truename b{color:#e9d5a6}
.nm-appraisal{font-style:italic;color:#dce4ea;line-height:1.6;margin:0 0 14px}
.nm-stats{margin:6px 0 8px}
.nm-block{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;background:#0b1218}
.nm-block p{margin:6px 0}
.nm-block-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px}
.nm-flaw{border-color:#65383d}
@media(max-width:560px){.nm-stats{grid-template-columns:repeat(2,1fr)}}
@media print{
  body{background:#fff!important;color:#000!important}
  .topbar,.nm-head,.nm-story,.nm-ending .actions,#toast{display:none!important}
  .nm-act{border:0;padding:0}
  .nm-test,.nm-confirm,.nm-ending,.nm-block,.stat{background:#fff!important;border-color:#999!important;color:#000!important}
  .nm-sheet h3,.nm-truename b,.nm-appraisal,.nm-ending .nm-banner,.stat b,.muted,.small{color:#000!important}
}

/* ========================================================================== */
/* v0.5.1 — DARK ONEIRIC DESIGN SYSTEM                                       */
/* Filosofia: Interface estável. Realidade instável.                          */
/* ========================================================================== */

:root{
  /* aliases legados mantêm todo o laboratório compatível com os novos tokens */
  --bg:var(--world-background-deep);--bg2:var(--world-background);--panel:var(--surface-primary);--panel2:var(--surface-elevated);
  --line:var(--border-quiet);--line2:var(--border-normal);--text:var(--text-primary);--muted:var(--text-secondary);--faint:var(--text-faint);
  --gold:var(--divine);--blue:var(--interaction);--green:var(--success);--red:var(--danger);--orange:#D58A63;
  --shadow:var(--shadow-normal);--radius:var(--radius-lg);--radius-sm:var(--radius-md)
}

html{background:var(--world-background-deep);scroll-behavior:smooth}
body{
  font-family:var(--font-human);color:var(--text-primary);background:var(--world-background);line-height:var(--leading-body);
  min-height:100vh;overflow-x:hidden;
}
body::before,body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:-2}
body::before{
  background:
    radial-gradient(ellipse at 18% -8%,rgba(143,163,199,.12),transparent 39%),
    radial-gradient(ellipse at 86% 14%,rgba(155,136,201,.075),transparent 32%),
    linear-gradient(180deg,#0B0D12 0%,#090B10 54%,#07090D 100%);
}
body::after{
  z-index:-1;opacity:.22;
  background-image:
    linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.01) 1px,transparent 1px);
  background-size:64px 64px,64px 64px;
  mask-image:radial-gradient(circle at center,black 0,transparent 77%);
}

/* Estados do mundo: posição funcional não muda; só atmosfera. */
:root[data-world-state="reality"] body::before{filter:saturate(.84)}
:root[data-world-state="sleep"] body::before{background:radial-gradient(ellipse at 50% 3%,rgba(155,136,201,.12),transparent 42%),linear-gradient(180deg,#0C0E14,#080A0F)}
:root[data-world-state="dream"] body::before{background:radial-gradient(ellipse at 70% 10%,rgba(155,136,201,.16),transparent 38%),radial-gradient(ellipse at 10% 80%,rgba(143,163,199,.08),transparent 36%),linear-gradient(180deg,#0C0E14,#080A10)}
:root[data-world-state="nightmare"] body::before{background:radial-gradient(ellipse at 74% 8%,rgba(155,136,201,.14),transparent 34%),radial-gradient(ellipse at 12% 70%,rgba(0,0,0,.44),transparent 48%),linear-gradient(165deg,#0B0D12,#080A0F 62%,#0C0910)}
:root[data-world-state="terror"] body::before{background:radial-gradient(ellipse at 80% 8%,rgba(214,106,114,.11),transparent 31%),radial-gradient(ellipse at 12% 66%,rgba(0,0,0,.62),transparent 52%),linear-gradient(170deg,#090B10,#07080C 58%,#100A0E)}
:root[data-world-state="awakening"] body::before{background:radial-gradient(ellipse at 50% 0%,rgba(198,168,106,.10),transparent 34%),radial-gradient(ellipse at 70% 20%,rgba(143,163,199,.08),transparent 30%),linear-gradient(180deg,#0C0E13,#090B10)}

.world-state-enter body::before{animation:world-breathe var(--motion-nightmare) var(--ease-dream) both}
@keyframes world-breathe{0%{opacity:.52;filter:blur(5px)}100%{opacity:1;filter:blur(0)}}

/* Camada anômala: discreta e semanticamente ligada ao Pesadelo. */
.app-shell{position:relative;isolation:isolate;min-height:100vh}
.app-shell::before{content:"";position:fixed;right:-15vw;top:14vh;width:44vw;height:44vw;border:1px solid transparent;border-top-color:rgba(155,136,201,.13);border-left-color:rgba(143,163,199,.07);border-radius:50%;pointer-events:none;z-index:-1;transform:rotate(-11deg)}
:root[data-world-state="nightmare"] .app-shell::before,:root[data-world-state="terror"] .app-shell::before{transform:rotate(13deg) translateX(-2vw);border-top-color:rgba(155,136,201,.22);box-shadow:-24px 18px 80px rgba(0,0,0,.28)}
.reduce-effects .app-shell::before{opacity:.3;transform:none!important}.reduce-motion.world-state-enter body::before{animation:none}

/* Topbar: metal envelhecido, fina e estável. */
.topbar{height:72px;padding:0 clamp(14px,3vw,34px);border-bottom:1px solid var(--border-quiet);background:rgba(9,11,16,.88);backdrop-filter:blur(14px);box-shadow:0 8px 40px rgba(0,0,0,.12)}
.no-blur .topbar,.no-blur .nm-head{backdrop-filter:none}
.brand{gap:13px;font-weight:680;letter-spacing:.055em;cursor:pointer;min-width:0}
.brand-mark{width:38px;height:38px;border:0;border-radius:50%;background:transparent;box-shadow:none;position:relative;flex:none;color:transparent}
.brand-mark::before{content:"";position:absolute;inset:4px;border-radius:50%;border:1px solid var(--interaction);border-right-color:transparent;transform:rotate(-24deg);box-shadow:0 0 22px rgba(143,163,199,.08)}
.brand-mark::after{content:"";position:absolute;width:18px;height:1px;background:var(--dream-accent);left:10px;top:18px;transform:rotate(28deg);box-shadow:7px -5px 0 -0.2px var(--world-background),7px -5px 0 .8px var(--dream-accent)}
.brand-text{font-size:12px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{color:var(--text-faint);font-size:9px;font-weight:620;letter-spacing:.16em}
.nav-actions{gap:7px}.settings-glyph{width:14px;height:14px;border:1px solid currentColor;border-radius:50%;border-right-color:transparent;display:inline-block;transform:rotate(20deg)}

.container{max-width:var(--content-max);padding:clamp(28px,5vw,58px) clamp(16px,3vw,30px) 88px}

/* Tipografia: humano claro, Pesadelo ritual apenas em marcos. */
h1,h2,h3,h4,p{overflow-wrap:anywhere}.hero h1,.nm-scene-title,.nm-spell,.nm-sheet h3,.nm-banner,.nightmare-title{font-family:var(--font-nightmare)}
.eyebrow{font-size:10px;letter-spacing:.22em;color:var(--interaction);font-weight:760}
.section-title{font-family:var(--font-nightmare);font-weight:500;font-size:var(--type-2xl);letter-spacing:.005em}
.muted{color:var(--text-secondary)}.faint{color:var(--text-faint)}

/* Superfícies: camadas da realidade, bordas finas e fechamento incompleto. */
.panel,.status-card,.mini-card,.hero-card,.side-card,.sheet-box,.review-section,.nm-test,.nm-confirm,.nm-ending,.nm-block,.modal{
  position:relative;border:1px solid var(--border-quiet);background:linear-gradient(145deg,rgba(18,22,33,.94),rgba(13,16,24,.91));box-shadow:var(--shadow-normal);border-radius:var(--radius-lg)
}
.panel::before,.status-card::before,.hero-card::before,.review-section::before,.nm-block::before,.modal::before{
  content:"";position:absolute;left:22px;top:-1px;width:46px;height:1px;background:var(--surface-primary);pointer-events:none
}
.hero-card{padding:clamp(30px,5vw,58px);border-radius:28px;overflow:hidden;background:linear-gradient(135deg,rgba(19,24,36,.95),rgba(10,13,19,.94))}
.hero-card::after{width:330px;height:330px;right:-120px;top:-155px;border-color:rgba(155,136,201,.18);box-shadow:none;transform:rotate(14deg)}
.hero-card .hero-sigil{position:absolute;right:6%;bottom:10%;width:160px;height:160px;opacity:.13;pointer-events:none}
.hero-card .hero-sigil::before,.hero-card .hero-sigil::after{content:"";position:absolute;inset:12px;border-radius:50%;border:1px solid var(--dream-accent);border-bottom-color:transparent;transform:rotate(33deg)}
.hero-card .hero-sigil::after{inset:42px;border-color:var(--interaction);border-left-color:transparent;transform:rotate(-17deg)}
.hero{gap:var(--grid-gap);margin-top:10px}.hero h1{font-weight:500;font-size:var(--type-hero);line-height:.98;letter-spacing:-.035em;margin:18px 0 20px;max-width:820px}.hero p{font-size:var(--type-md);line-height:1.75;color:var(--text-secondary);max-width:690px}
.hero-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--dream-soft);font-size:12px}.hero-kicker::before{content:"";width:24px;height:1px;background:var(--dream-accent)}
.status-card{padding:24px;background:linear-gradient(160deg,rgba(19,23,34,.86),rgba(10,13,19,.82));box-shadow:none}.status-card h3{font-family:var(--font-nightmare);font-weight:500;font-size:18px}

/* Botões: claros como controles, estranhos só nas bordas/sombras. */
.btn{min-height:var(--tap-min);position:relative;overflow:hidden;border:1px solid var(--border-normal);border-radius:9px;background:linear-gradient(180deg,rgba(27,33,48,.92),rgba(17,21,31,.94));color:var(--text-primary);padding:10px 15px;font-weight:680;letter-spacing:.01em;transform:none!important;transition:border-color var(--motion-fast),background var(--motion-fast),color var(--motion-fast),box-shadow var(--motion-fast);isolation:isolate}
.btn::before{content:"";position:absolute;left:-1px;top:-1px;width:32%;height:1px;background:var(--world-background);transition:width var(--motion-normal) var(--ease-human),background var(--motion-normal);z-index:2}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 15%,rgba(143,163,199,.08) 49%,transparent 72%);transform:translateX(-120%);transition:transform var(--motion-slow) var(--ease-dream);z-index:-1}
.btn:hover{border-color:rgba(143,163,199,.62);background:linear-gradient(180deg,rgba(31,38,55,.96),rgba(18,23,34,.96));box-shadow:0 0 0 1px rgba(143,163,199,.05),0 12px 30px rgba(0,0,0,.18)}
.btn:hover::before{width:12%;background:var(--interaction)}.btn:hover::after{transform:translateX(95%)}
.btn:active{background:radial-gradient(circle at 35% 50%,rgba(7,9,13,.82),rgba(23,28,41,.95) 54%);border-color:var(--interaction-strong)}
.btn.primary{color:#F0ECDF;background:linear-gradient(180deg,rgba(96,91,135,.60),rgba(48,48,72,.76));border-color:rgba(155,136,201,.76);box-shadow:inset 0 0 28px rgba(155,136,201,.05)}
.btn.primary:hover{background:linear-gradient(180deg,rgba(108,101,149,.68),rgba(52,52,79,.82));border-color:var(--dream-soft)}
.btn.primary::before{background:var(--surface-primary)}.btn.danger{color:var(--danger-soft);border-color:var(--border-danger);background:linear-gradient(180deg,rgba(63,30,36,.68),rgba(35,18,23,.8))}.btn.danger::before{background:var(--danger)}
.btn.ghost{background:transparent;border-color:var(--border-quiet);color:var(--text-secondary)}.btn.ghost:hover{color:var(--text-primary);border-color:var(--border-normal);background:rgba(143,163,199,.045)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.38;filter:saturate(.35);cursor:not-allowed;box-shadow:none}.btn:disabled::after,.btn[aria-disabled="true"]::after{display:none}
.btn.small{min-height:38px;padding:7px 11px;font-size:12px}

/* Estados/etiquetas nunca dependem só da cor. */
.tag{gap:6px;border-radius:999px;border-color:var(--border-normal);background:rgba(143,163,199,.045);color:var(--text-secondary);font-size:9px;letter-spacing:.12em}
.tag::before{content:"";width:6px;height:6px;border:1px solid currentColor;border-radius:50%;border-right-color:transparent}
.tag.gold{color:var(--divine);border-color:var(--border-divine);background:rgba(198,168,106,.05)}
.tag.green{color:var(--success-soft);border-color:var(--border-success);background:rgba(117,183,158,.055)}
.tag.red{color:var(--danger-soft);border-color:var(--border-danger);background:rgba(214,106,114,.055)}
.tag.red::before{border-radius:0;transform:rotate(45deg)}.tag.blue{color:var(--interaction-strong);border-color:var(--border-normal);background:rgba(143,163,199,.055)}
.dot{border:1px solid currentColor;background:transparent!important;box-shadow:none!important}.dot.green{color:var(--success)}.dot.gold{color:var(--divine)}.dot.red{color:var(--danger)}

/* Forms: editabilidade sempre óbvia. */
.field{gap:8px}.field label,.nm-free label,.nm-manual label{font-size:12px;color:var(--text-secondary);font-weight:650}
.field input,.field select,.field textarea,.nm-free textarea,.nm-manual input,.dbg input{
  border:1px solid var(--border-normal);background:rgba(9,12,18,.78);color:var(--text-primary);border-radius:9px;padding:12px 13px;min-height:var(--tap-min);box-shadow:inset 0 1px 0 rgba(255,255,255,.018);transition:border-color var(--motion-fast),box-shadow var(--motion-fast),background var(--motion-fast)
}
.field textarea,.nm-free textarea{line-height:1.55}.field input::placeholder,.field textarea::placeholder,.nm-free textarea::placeholder{color:#697181;opacity:1}
.field input:focus,.field select:focus,.field textarea:focus,.nm-free textarea:focus,.nm-manual input:focus{border-color:var(--interaction);background:rgba(12,16,24,.94);box-shadow:0 0 0 3px rgba(143,163,199,.10);outline:0}
.field-error{border-color:var(--border-danger);background:linear-gradient(135deg,rgba(64,29,36,.46),rgba(25,15,20,.64));color:#F2C3C5;padding-left:42px;position:relative}
.field-error::before{content:"!";position:absolute;left:15px;top:13px;width:18px;height:18px;border:1px solid var(--danger);transform:rotate(45deg);display:grid;place-items:center;font-size:10px;color:var(--danger-soft)}
.field-error::after{content:"!";position:absolute;left:21px;top:14px;font-size:11px;color:var(--danger-soft)}

/* Grid, cards e dados do laboratório. */
.grid-3{gap:var(--grid-gap)}.feature-card{padding:24px;box-shadow:none}.feature-icon{color:var(--dream-soft);font-size:18px}.dashboard-grid{gap:var(--grid-gap)}.side-card{background:rgba(14,18,27,.86);box-shadow:none}.sidebar{top:90px}
.stat{border:1px solid var(--border-quiet);border-radius:10px;background:rgba(9,12,18,.62);padding:12px}.stat b{color:var(--text-primary);font-weight:690}.stat span{color:var(--text-faint)}
.copybox{border:1px solid rgba(198,168,106,.30);border-style:dashed;background:rgba(198,168,106,.035);border-radius:10px}.divider{background:var(--border-quiet)}
.tabs{border-bottom-color:var(--border-quiet)}.tab.active{border-bottom-color:var(--interaction);color:var(--text-primary)}
.role-card,.ability,.scenario-link,.player-row,.log-item{border-color:var(--border-quiet);background:rgba(10,13,20,.68);border-radius:10px}.role-card:hover,.scenario-link:hover{border-color:var(--border-normal)}.role-card.selected{border-color:var(--dream-accent);box-shadow:0 0 0 2px rgba(155,136,201,.08)}

/* Wizard humano: a UI é realidade — limpa, quase sem distorção. */
.human-flow :focus-visible,.btn:focus-visible,.tab:focus-visible,.settings-choice:has(input:focus-visible),.settings-toggle:has(input:focus-visible){outline:2px solid var(--interaction-strong);outline-offset:3px}
.human-flow .wizard-steps{position:relative;gap:8px}.human-flow .wizard-steps::before{content:"";position:absolute;left:5%;right:5%;top:22px;height:1px;background:linear-gradient(90deg,transparent,var(--border-normal) 10%,var(--border-normal) 90%,transparent);z-index:0}
.human-flow .wizard-step{position:relative;z-index:1;border-radius:50%;background:var(--surface-primary);border-color:var(--border-normal);color:var(--text-secondary)}
.human-flow .wizard-step.active{border-color:var(--interaction);color:var(--interaction-strong);box-shadow:0 0 0 4px rgba(143,163,199,.07)}
.human-flow .wizard-step.done{border-color:var(--border-success);color:var(--success-soft)}
.counter-row{border-bottom-color:var(--border-quiet)}.counter button{border-color:var(--border-normal);background:rgba(20,26,38,.82);color:var(--text-primary)}
.check-card{border-color:var(--border-quiet);background:rgba(10,13,20,.62);border-radius:9px;transition:border-color var(--motion-fast),background var(--motion-fast)}.check-card:has(input:checked){border-color:var(--dream-accent);background:rgba(155,136,201,.065)}.check-card input{accent-color:var(--dream-accent)}
.review-section{box-shadow:none;background:rgba(12,15,23,.72)}.review-section::before{width:28px}.empty-power{border-color:rgba(155,136,201,.34);background:rgba(155,136,201,.035);color:var(--dream-soft);font-family:var(--font-nightmare);font-style:normal}

/* Settings */
.modal-back{background:rgba(4,5,8,.78);backdrop-filter:blur(8px)}.no-blur .modal-back{backdrop-filter:none}.modal{background:linear-gradient(145deg,#121621,#0D1119);box-shadow:var(--shadow-elevated);padding:26px}
.settings-fieldset{border:0;margin:0 0 18px;padding:0}.settings-fieldset legend{font-size:12px;color:var(--text-secondary);font-weight:700;margin-bottom:10px}
.settings-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.settings-choice,.settings-toggle{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border-quiet);background:rgba(9,12,18,.55);border-radius:10px;padding:12px;cursor:pointer}.settings-choice:has(input:checked){border-color:var(--interaction);background:rgba(143,163,199,.055)}.settings-choice input,.settings-toggle input{accent-color:var(--dream-accent);width:18px;height:18px;flex:none;margin-top:2px}.settings-choice span,.settings-toggle span{display:grid;gap:2px}.settings-choice small,.settings-toggle small{color:var(--text-faint);font-size:11px}.settings-toggle{margin-top:8px}.settings-note{display:flex;gap:11px;align-items:flex-start;margin-top:18px;padding-top:16px;border-top:1px solid var(--border-quiet);color:var(--text-secondary);font-size:12px}.settings-note p{margin:0}.symbol{display:inline-block;flex:none}.symbol-known{width:16px;height:16px;border:1px solid var(--interaction);border-radius:50%;border-right-color:transparent}

/* Primeiro Pesadelo — leitura cinematográfica, conteúdo no centro. */
.nightmare{max-width:var(--reading-max);margin:0 auto;position:relative}
.nightmare::after{content:"";position:fixed;left:calc(50% + 325px);top:20vh;width:90px;height:160px;background:linear-gradient(145deg,rgba(0,0,0,.34),transparent);filter:blur(22px);transform:skewY(-16deg) rotate(9deg);pointer-events:none;opacity:.55;z-index:-1}
.reduce-effects .nightmare::after{display:none}.no-blur .nightmare::after{filter:none;opacity:.18}
.nm-head{top:72px;padding:14px 0 12px;background:linear-gradient(180deg,rgba(11,13,18,.95),rgba(11,13,18,.86));border-bottom:1px solid var(--border-quiet);margin-bottom:14px}.nm-head::after{content:"";position:absolute;left:0;bottom:-1px;width:82px;height:1px;background:var(--dream-accent);opacity:.55}
.nm-condition{gap:7px;margin-top:9px}.nm-chip{border-radius:8px;border-color:var(--border-quiet);background:rgba(9,12,18,.72);color:var(--text-secondary);padding:6px 9px;font-size:11px}.nm-chip::before{content:"";width:5px;height:5px;border:1px solid var(--interaction);border-radius:50%;border-right-color:transparent}.nm-chip.nm-warn{color:var(--danger-soft);border-color:var(--border-danger);background:rgba(75,31,39,.18)}.nm-chip.nm-warn::before{border-radius:0;transform:rotate(45deg);border-color:var(--danger)}
.nm-bar{background:#252A34;width:52px}.nm-bar i{background:linear-gradient(90deg,var(--success),var(--interaction))}.nm-chip.nm-critical .nm-bar i{background:var(--danger)}
.nm-story{font-size:clamp(16px,1.5vw,18px);line-height:var(--leading-narrative);padding:12px 0 25px;min-height:34vh;cursor:default}
.nm-story[data-revealing="true"]{cursor:pointer}.nm-story [data-journal-index]{scroll-margin-top:190px}.nm-story p{max-width:66ch;margin:0 0 16px;color:#D8DCE3}.nm-story .nm-narr{color:#D9DCE2}.nm-old{opacity:.48;transition:opacity var(--motion-normal)}.nm-story:hover .nm-old{opacity:.62}
.nm-scene-title{font-size:clamp(24px,4vw,34px);font-weight:500;letter-spacing:.005em;margin:38px 0 19px;color:var(--text-primary);scroll-margin-top:165px}.nm-scene-title::before{content:"";display:inline-block;width:23px;height:23px;margin-right:11px;border:1px solid var(--dream-accent);border-right-color:transparent;border-radius:50%;vertical-align:-3px;transform:rotate(28deg)}.nm-scene-title small{font-family:var(--font-human);font-size:9px;letter-spacing:.19em;color:var(--interaction);margin:7px 0 0 36px}
.nm-spell{color:var(--dream-soft);font-style:normal;letter-spacing:.035em;font-size:1.02em;padding-left:17px;position:relative}.nm-spell::before{content:"";position:absolute;left:0;top:.35em;width:7px;height:7px;border:1px solid var(--dream-accent);border-radius:50%;border-right-color:transparent}.nm-you{color:var(--interaction-strong)!important;font-size:15px;padding-left:16px;border-left:1px solid rgba(143,163,199,.24)}.nm-you>span{color:var(--interaction)}.nm-freetext{font-style:italic}
.nm-system{font-size:12px!important;color:var(--text-faint)!important;text-transform:none;letter-spacing:.02em}.nm-system::before{content:"SYSTEM // ";color:var(--interaction);font-family:var(--font-mono);font-size:9px;letter-spacing:.12em}.nm-roll{border-left:0;padding-left:0}

/* Revelação frase por frase: todo o texto já ocupa o layout, mas começa invisível.
   A frase continua sendo a unidade narrativa; dentro dela, as palavras ganham presença
   em uma onda curta para evitar a percepção de texto surgindo "do nada". */
:root{--phrase-emerge-blur:5px;--phrase-emerge-shift:3px;--phrase-glow:143 163 199}
:root[data-text-speed="slow"]{--phrase-emerge-blur:7px;--phrase-emerge-shift:4px}
:root[data-text-speed="fast"]{--phrase-emerge-blur:2.5px;--phrase-emerge-shift:1.5px}

/* Pending NÃO usa display:none: a geometria da página fica estável antes da revelação. */
.nm-phrase{display:inline;--phrase-glow:143 163 199}
.nm-phrase[data-tone="tension"]{--phrase-glow:155 136 201}
.nm-phrase[data-tone="revelation"],.nm-phrase[data-tone="nightmare"]{--phrase-glow:185 172 224}
.nm-phrase[data-tone="terror"]{--phrase-glow:214 106 114}
.nm-phrase[data-tone="system"]{--phrase-glow:143 163 199}
.nm-phrase.is-pending{visibility:hidden;opacity:0}
.nm-phrase.is-entering{visibility:visible;opacity:1;position:relative}

/* O texto normal usa onda por palavra. Todas as palavras existem desde o primeiro
   frame, porém sem cor/opacidade até sua vez de emergir. */
.nm-word{display:inline;color:inherit;opacity:1;filter:none;transform:none;text-shadow:none}
.nm-word-wave.is-entering .nm-word{
  display:inline-block;
  opacity:0;
  color:rgb(var(--phrase-glow)/0);
  filter:blur(var(--phrase-emerge-blur)) brightness(.28);
  transform:translateY(var(--phrase-emerge-shift));
  text-shadow:0 0 18px rgb(var(--phrase-glow)/0);
  will-change:opacity,filter,transform,color,text-shadow
}
.nm-word-wave.is-entering.is-visible .nm-word{
  animation:nm-word-emerge var(--word-duration,var(--phrase-reveal,var(--narrative-reveal-normal))) var(--ease-dream) both;
  animation-delay:calc(var(--word-i,0) * var(--word-step,0ms))
}
@keyframes nm-word-emerge{
  0%{opacity:0;color:rgb(var(--phrase-glow)/0);filter:blur(var(--phrase-emerge-blur)) brightness(.24);transform:translateY(var(--phrase-emerge-shift));text-shadow:0 0 20px rgb(var(--phrase-glow)/0)}
  26%{opacity:.18;color:rgb(var(--phrase-glow)/.18);filter:blur(3.6px) brightness(.50);text-shadow:0 0 18px rgb(var(--phrase-glow)/.10)}
  55%{opacity:.58;color:rgb(var(--phrase-glow)/.62);filter:blur(1.7px) brightness(.84);transform:translateY(1px);text-shadow:0 0 15px rgb(var(--phrase-glow)/.16)}
  78%{opacity:.92;color:rgb(var(--phrase-glow)/.92);filter:blur(.45px) brightness(1.08);transform:translateY(.2px);text-shadow:0 0 9px rgb(var(--phrase-glow)/.12)}
  100%{opacity:1;color:rgb(var(--phrase-glow));filter:none;transform:none;text-shadow:0 0 0 rgb(var(--phrase-glow)/0)}
}

/* Runas e outros elementos que são uma unidade visual única conservam manifestação
   de bloco, mas também já reservam espaço invisível no layout. */
.nm-phrase.is-entering:not(.nm-word-wave){filter:blur(var(--phrase-emerge-blur)) brightness(.30);transform:translateY(var(--phrase-emerge-shift));text-shadow:0 0 0 rgb(var(--phrase-glow)/0)}
.nm-phrase.is-entering:not(.nm-word-wave).is-visible{animation:nm-phrase-emerge var(--phrase-reveal,var(--narrative-reveal-normal)) var(--ease-dream) both}
@keyframes nm-phrase-emerge{
  0%{opacity:0;filter:blur(var(--phrase-emerge-blur)) brightness(.28);transform:translateY(var(--phrase-emerge-shift));text-shadow:0 0 18px rgb(var(--phrase-glow)/0)}
  30%{opacity:.28;filter:blur(3px) brightness(.62);text-shadow:0 0 16px rgb(var(--phrase-glow)/.08)}
  68%{opacity:.82;filter:blur(.8px) brightness(1.10);transform:translateY(.4px);text-shadow:0 0 11px rgb(var(--phrase-glow)/.13)}
  88%{opacity:1;filter:blur(0) brightness(1.06);text-shadow:0 0 7px rgb(var(--phrase-glow)/.08)}
  100%{opacity:1;filter:none;transform:none;text-shadow:none}
}
.no-blur .nm-word-wave.is-entering .nm-word{filter:none}
.no-blur .nm-word-wave.is-entering.is-visible .nm-word{animation-name:nm-word-emerge-no-blur}
@keyframes nm-word-emerge-no-blur{
  0%{opacity:0;color:rgb(var(--phrase-glow)/0);transform:translateY(var(--phrase-emerge-shift))}
  58%{opacity:.72;color:rgb(var(--phrase-glow)/.76)}
  100%{opacity:1;color:rgb(var(--phrase-glow));transform:none}
}
.no-blur .nm-phrase.is-entering:not(.nm-word-wave){filter:none}
.no-blur .nm-phrase.is-entering:not(.nm-word-wave).is-visible{animation-name:nm-phrase-emerge-no-blur}
@keyframes nm-phrase-emerge-no-blur{0%{opacity:0;transform:translateY(var(--phrase-emerge-shift));filter:brightness(.35)}65%{opacity:.88;filter:brightness(1.08)}100%{opacity:1;transform:none;filter:none}}

.reduce-motion .nm-word-wave.is-entering .nm-word{opacity:1;color:inherit;transform:none;filter:none;text-shadow:none;animation:none}
.reduce-motion .nm-phrase.is-entering:not(.nm-word-wave){transform:none;filter:none;animation:none;opacity:1}
.nm-phrase.is-shown{visibility:visible;display:inline;opacity:1;filter:none;transform:none;text-shadow:none}
.nm-phrase.is-shown .nm-word{display:inline;color:inherit;opacity:1;filter:none;transform:none;text-shadow:none;animation:none}
.nm-reveal-tools{display:flex;justify-content:flex-end;min-height:32px;margin-top:-4px}.nm-skip{border:0;background:transparent;color:var(--text-faint);font-size:11px;padding:5px 0;cursor:pointer}.nm-skip:hover{color:var(--text-secondary)}

/* Runas do Feitiço — inscrição primeiro, interpretação em português por hover/foco/toque. */
.nm-spell{padding-left:20px}.nm-rune{appearance:none;border:0;background:transparent;color:inherit;font:inherit;text-align:left;padding:3px 5px;margin:-3px -5px;border-radius:7px;max-width:100%;vertical-align:middle;cursor:help;position:relative;outline:none}
.nm-rune.nm-phrase.is-entering,.nm-rune.nm-phrase.is-shown{display:inline-grid}.nm-rune.nm-phrase.is-entering.is-visible{display:inline-grid}
.nm-rune-script,.nm-rune-translation{grid-area:1/1;align-self:center;transition:opacity var(--motion-normal) var(--ease-dream),filter var(--motion-normal) var(--ease-dream),transform var(--motion-normal) var(--ease-dream)}
.nm-rune-script{display:inline-flex;align-items:center;flex-wrap:wrap;gap:2px;color:var(--dream-soft);opacity:.96;filter:drop-shadow(0 0 8px rgba(155,136,201,.16));min-height:1.45em}
.nm-rune-word{display:inline-flex;align-items:center;gap:1px;white-space:nowrap}.nm-rune-gap{width:.48em}.nm-rune-glyph{width:.56em;height:1.05em;overflow:visible;flex:none}.nm-rune-glyph path{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.nm-rune-punct{display:inline-block;width:4px;height:4px;margin:0 2px;border:1px solid currentColor;transform:rotate(45deg);opacity:.72}.nm-rune-punct--small{width:2px;height:2px}
.nm-rune-bracket{width:8px;height:1.2em;position:relative;flex:none;opacity:.65}.nm-rune-bracket::before,.nm-rune-bracket::after{content:"";position:absolute;left:0;width:7px;height:1px;background:currentColor}.nm-rune-bracket::before{top:2px}.nm-rune-bracket::after{bottom:2px}.nm-rune-bracket--open{border-left:1px solid currentColor}.nm-rune-bracket--close{border-right:1px solid currentColor;margin-left:2px}.nm-rune-bracket--close::before,.nm-rune-bracket--close::after{left:auto;right:0}
.nm-rune-translation{opacity:0;filter:blur(3px);transform:translateY(2px);color:var(--text-primary);font-family:var(--font-nightmare);letter-spacing:.025em;pointer-events:none;padding-right:4px}
.nm-rune:hover .nm-rune-script,.nm-rune:focus-visible .nm-rune-script,.nm-rune.is-translated .nm-rune-script,.translate-runes .nm-rune-script{opacity:.09;filter:blur(2px)}
.nm-rune:hover .nm-rune-translation,.nm-rune:focus-visible .nm-rune-translation,.nm-rune.is-translated .nm-rune-translation,.translate-runes .nm-rune-translation{opacity:1;filter:none;transform:none}
.nm-rune:focus-visible{outline:1px solid var(--dream-accent);outline-offset:4px}.nm-rune:hover::after,.nm-rune:focus-visible::after,.nm-rune.is-translated::after{content:"";position:absolute;left:4px;right:4px;bottom:-4px;height:1px;background:linear-gradient(90deg,var(--dream-accent),transparent 78%);opacity:.55}
.nm-rune-hint{display:block;margin:6px 0 18px 5px;color:var(--text-faint);font-family:var(--font-human);font-size:10px;letter-spacing:.025em;font-style:normal}.nm-rune-hint::before{content:"◇";color:var(--dream-accent);margin-right:6px}
.reduce-effects .nm-rune-script{filter:none}.no-blur .nm-rune-translation,.no-blur .nm-rune:hover .nm-rune-script,.no-blur .nm-rune:focus-visible .nm-rune-script,.no-blur .nm-rune.is-translated .nm-rune-script,.no-blur.translate-runes .nm-rune-script{filter:none}.reduce-motion .nm-rune-script,.reduce-motion .nm-rune-translation{transition:none}
@media(hover:none){.nm-rune{cursor:pointer}.nm-rune:hover .nm-rune-script{opacity:.96;filter:drop-shadow(0 0 8px rgba(155,136,201,.16))}.nm-rune:hover .nm-rune-translation{opacity:0;filter:blur(3px);transform:translateY(2px)}.nm-rune.is-translated .nm-rune-script,.translate-runes .nm-rune-script{opacity:.09;filter:blur(2px)}.nm-rune.is-translated .nm-rune-translation,.translate-runes .nm-rune-translation{opacity:1;filter:none;transform:none}}

/* As escolhas esperam a narrativa. */
.nm-act{border-top:1px solid var(--border-quiet);padding:22px 0 48px;transition:opacity var(--motion-normal),transform var(--motion-normal);position:relative}.nm-act::before{content:"";position:absolute;top:-1px;left:0;width:54px;height:1px;background:var(--interaction);opacity:.45}.nm-act.nm-act--waiting{opacity:0;transform:translateY(7px);pointer-events:none;user-select:none}.nm-act.nm-act--ready{opacity:1;transform:none}.reduce-motion .nm-act{transition:none;transform:none!important}
.nm-act h4{font-family:var(--font-nightmare);font-size:18px;font-weight:500;color:var(--text-primary)}.nm-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.nm-options .btn{justify-content:flex-start;text-align:left;min-height:50px;padding-left:18px}.nm-options .btn::before{width:18px}.nm-options .btn:hover::before{width:7px}.nm-free{padding-top:15px;border-top:1px solid var(--border-quiet);margin-top:18px}.nm-free label::before{content:"+ ";color:var(--interaction)}
.nm-test,.nm-confirm,.nm-ending{background:linear-gradient(145deg,rgba(18,22,33,.90),rgba(11,14,21,.94));box-shadow:none;padding:20px}.nm-test::before,.nm-confirm::before,.nm-ending::before{content:"";position:absolute;left:20px;top:-1px;width:44px;height:1px;background:var(--surface-primary)}
.nm-target{padding:12px 14px;border:1px solid var(--border-quiet);background:rgba(9,12,18,.6);border-radius:9px;font-family:var(--font-mono);font-size:13px}.nm-manual{padding-top:5px}

/* Ritual de rolagem d100. */
.nm-roll-card{max-width:540px;margin:18px 0;padding:15px 18px;border:1px solid var(--border-quiet);background:linear-gradient(120deg,rgba(9,12,18,.76),rgba(18,22,33,.5));position:relative;display:grid;grid-template-columns:92px 1fr;gap:16px;align-items:center;border-radius:10px}.nm-roll-card::after{content:"";position:absolute;left:91px;top:16px;bottom:16px;width:1px;background:linear-gradient(transparent,var(--border-normal),transparent)}.nm-die-ritual{text-align:center;font-family:var(--font-nightmare)}.nm-die-result{display:block;font-size:36px;line-height:1;color:var(--text-primary)}.nm-die-type{display:block;margin-top:5px;font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;color:var(--text-faint)}.nm-roll-degree{font-family:var(--font-nightmare);font-size:18px;color:var(--interaction-strong)}.nm-roll-card[data-degree="Extremo"] .nm-roll-degree{color:var(--divine)}.nm-roll-card[data-degree="Falha"] .nm-roll-degree{color:var(--danger-soft)}.nm-roll-detail{display:block;font-size:11px;color:var(--text-faint);margin-top:4px}

/* Revelação sobrenatural / ficha: constelação de Destino. */
.nm-sheet{border-top-color:var(--border-anomaly);padding-top:22px}.nm-sheet h3{font-weight:500;color:var(--dream-soft);font-size:clamp(27px,4vw,38px)}.nm-truename b{color:var(--divine)}.nm-appraisal{font-family:var(--font-nightmare);font-style:normal;color:#D9DCE4}.nm-block{background:rgba(12,15,23,.72);box-shadow:none}.nm-block-head>b{color:var(--text-primary)}.nm-flaw{border-color:var(--border-danger)}
.fate-map{margin:20px 0 22px;padding:18px 14px;border:1px solid var(--border-quiet);background:rgba(8,10,15,.5);border-radius:12px;overflow:hidden}.fate-map-title{font-size:10px;color:var(--text-faint);letter-spacing:.16em;text-transform:uppercase;margin-bottom:10px}.fate-map svg{display:block;width:100%;min-width:0;height:auto;max-height:190px}.fate-map-mobile{display:none}.fate-thread-line{fill:none;stroke:rgba(143,163,199,.40);stroke-width:1}.fate-thread-line.major{stroke:rgba(155,136,201,.65);stroke-width:1.4}.fate-node circle,.fate-node rect,.fate-node polygon{fill:#0C0F17;stroke:var(--interaction);stroke-width:1}.fate-node.manifest circle{stroke:var(--dream-accent);stroke-width:1.4}.fate-node.manifest .outer{fill:none;stroke:rgba(155,136,201,.46)}.fate-node.flaw polygon{stroke:var(--danger)}.fate-node.ability polygon{stroke:var(--divine)}.fate-label{font-family:var(--font-human);font-size:10px;fill:var(--text-secondary)}.fate-label.strong{font-family:var(--font-nightmare);font-size:13px;fill:var(--text-primary)}
.nm-ending .nm-banner{font-family:var(--font-nightmare);font-size:26px;font-weight:500;color:var(--dream-soft)}.nm-ending.nm-died .nm-banner{color:var(--danger-soft)}

/* Modal/menu/tooltips e feedback */
.toast{right:20px;bottom:20px;border-radius:9px;border-color:var(--border-normal);background:rgba(18,22,33,.96);color:var(--text-primary);box-shadow:var(--shadow-elevated)}
.tooltip,[data-tooltip]{position:relative}.tooltip{padding:8px 10px;border:1px solid var(--border-normal);border-radius:8px;background:#10141E;color:var(--text-secondary);font-size:11px;box-shadow:var(--shadow-normal)}
.footer-note{border-top-color:var(--border-quiet);color:var(--text-faint)}

/* Debug do Mestre permanece claro e mais "sistema" que "Pesadelo". */
.dbg table{background:rgba(9,12,18,.35)}.dbg th{color:var(--text-secondary);font-weight:680}.dbg td,.dbg th{border-bottom-color:var(--border-quiet)!important}.dbg pre{background:rgba(8,10,15,.76)!important;border-color:var(--border-quiet)!important;color:var(--text-secondary)}.kept{color:var(--danger-soft)!important}.changed{color:var(--success-soft)!important}

/* Showcase de design system */
.ds-shell{max-width:1100px;margin:0 auto;padding:42px 20px 80px}.ds-hero{max-width:780px;margin-bottom:40px}.ds-hero h1{font-family:var(--font-nightmare);font-size:clamp(38px,7vw,72px);font-weight:500;line-height:1;margin:12px 0}.ds-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.ds-section{padding:22px}.ds-section h2{font-family:var(--font-nightmare);font-weight:500;margin:0 0 14px}.swatches{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.swatch{min-height:92px;padding:9px;border:1px solid var(--border-quiet);border-radius:9px;display:flex;align-items:flex-end;font-size:9px;color:var(--text-secondary)}.swatch.interaction{background:var(--interaction);color:#0B0D12}.swatch.dream{background:var(--dream-accent);color:#0B0D12}.swatch.divine{background:var(--divine);color:#0B0D12}.swatch.danger{background:var(--danger);color:#0B0D12}.swatch.success{background:var(--success);color:#0B0D12}


.nm-free-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px}.nm-free-foot .btn{flex:0 0 auto}
.fate-map-mobile{padding:4px 2px 2px}.fate-mobile-node{min-width:0;text-align:center;padding:9px 8px;border:1px solid var(--border-quiet);border-radius:9px;background:rgba(12,15,23,.72)}.fate-mobile-node small{display:block;color:var(--text-faint);font-size:9px;letter-spacing:.13em;text-transform:uppercase;margin:4px 0}.fate-mobile-node b{display:block;color:var(--text-primary);font-family:var(--font-nightmare);font-size:13px;font-weight:500;line-height:1.2;overflow-wrap:anywhere}.fate-mobile-symbol{display:inline-block;width:15px;height:15px;border:1px solid var(--interaction);border-radius:50%;position:relative}.fate-mobile-symbol.known::after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:var(--interaction);left:4px;top:4px}.fate-mobile-symbol.manifest{width:19px;height:19px;border-color:var(--dream-accent);box-shadow:0 0 0 4px rgba(155,136,201,.10)}.fate-mobile-symbol.ability{border-radius:0;transform:rotate(45deg);border-color:var(--divine)}.fate-mobile-symbol.flaw{border-radius:0;transform:rotate(45deg);border-color:var(--danger)}.fate-mobile-symbol.flaw::before,.fate-mobile-symbol.flaw::after{content:"";position:absolute;left:6px;top:1px;width:1px;height:11px;background:var(--danger)}.fate-mobile-symbol.flaw::before{transform:rotate(45deg)}.fate-mobile-symbol.flaw::after{transform:rotate(-45deg)}.fate-mobile-thread{display:block;width:1px;height:18px;margin:0 auto;background:var(--border-normal)}.fate-mobile-thread.major{background:var(--dream-accent);opacity:.6}.fate-mobile-branches{height:20px;display:grid;grid-template-columns:repeat(3,1fr);position:relative;margin:0 12%}.fate-mobile-branches::before{content:"";position:absolute;left:16.7%;right:16.7%;top:9px;height:1px;background:var(--border-normal)}.fate-mobile-branches span{position:relative}.fate-mobile-branches span::before{content:"";position:absolute;left:50%;top:0;width:1px;height:20px;background:var(--border-normal)}.fate-mobile-leaves{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}

/* Responsividade — mesma hierarquia, alvos confortáveis. */
@media(max-width:900px){
  .container{padding-top:32px}.hero{grid-template-columns:1fr}.grid-3,.ds-grid{grid-template-columns:1fr}.dashboard-grid,.gm-layout{grid-template-columns:1fr}.sidebar{position:static}.role-choice{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr 1fr}.hero-card{padding:34px}.sheet{grid-template-columns:1fr}.nm-options{grid-template-columns:1fr}.nightmare::after{display:none}
}
@media(max-width:620px){
  .topbar{height:64px;padding:0 12px}.container{padding:24px 14px 64px}.brand-mark{width:34px;height:34px}.brand small{display:none}.settings-label{display:none}.nav-actions{gap:4px}.nav-actions .btn.small{padding:7px 9px;min-width:40px}.hero-card{padding:26px 21px}.hero h1{font-size:clamp(38px,12vw,58px)}.panel{padding:17px}.role-choice,.stat-grid,.metric-grid,.talent-grid{grid-template-columns:1fr 1fr}.human-flow .wizard-steps{gap:4px}.human-flow .wizard-step{height:40px}.nm-head{top:64px;margin-left:-2px;margin-right:-2px}.nm-story{font-size:16px;line-height:1.76}.nm-scene-title{font-size:27px;margin-top:31px}.nm-scene-title small{margin-left:34px}.nm-roll-card{grid-template-columns:76px 1fr}.nm-roll-card::after{left:76px}.settings-choice-grid{grid-template-columns:1fr}.modal{padding:19px}.swatches{grid-template-columns:repeat(2,1fr)}.fate-map{padding:15px 10px}.fate-map-desktop{display:none!important}.fate-map-mobile{display:block}.nm-free-foot{align-items:stretch;flex-direction:column}.nm-free-foot .btn{width:100%}
}
@media(max-width:420px){.role-choice,.stat-grid,.metric-grid,.talent-grid{grid-template-columns:1fr}.brand-text{max-width:160px}.nm-condition{display:grid;grid-template-columns:1fr 1fr}.nm-chip{justify-content:flex-start}.nm-stats{grid-template-columns:repeat(2,1fr)}}

/* Preferências de acessibilidade */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
.reduce-motion *, .reduce-motion *::before,.reduce-motion *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
.reduce-effects body::after{opacity:.08}.reduce-effects .hero-card::after{opacity:.35}.reduce-effects .nm-scene-title::before{box-shadow:none}.no-blur *{--local-blur:0px}

@media print{
  .fate-map{border-color:#777!important}.fate-map svg{min-width:0}.fate-thread-line{stroke:#777!important}.fate-label,.fate-label.strong{fill:#000!important}
}
.nm-reveal-block.is-pending{display:none}.nm-reveal-block.is-entering{display:grid;opacity:0;filter:blur(3px);transform:translateY(2px)}.nm-reveal-block.is-visible{opacity:1;filter:blur(0);transform:none;transition:opacity var(--phrase-reveal,var(--narrative-reveal-normal)) var(--ease-dream),filter var(--phrase-reveal,var(--narrative-reveal-normal)) var(--ease-dream),transform var(--phrase-reveal,var(--narrative-reveal-normal)) var(--ease-dream)}.nm-reveal-block.is-shown{display:grid;opacity:1;filter:none;transform:none}.no-blur .nm-reveal-block.is-entering,.reduce-motion .nm-reveal-block.is-entering{filter:none;transform:none}
.human-flow .field input:focus-visible,.human-flow .field select:focus-visible,.human-flow .field textarea:focus-visible,.nm-story[data-revealing="true"]:focus-visible{outline:2px solid var(--interaction-strong);outline-offset:3px;border-color:var(--interaction)}
.oneiric-loader{width:34px;height:34px;border:1px solid var(--interaction);border-right-color:transparent;border-radius:50%;position:relative}.oneiric-loader::after{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid var(--dream-accent);border-left-color:transparent;animation:oneiric-turn 1.8s linear infinite}.reduce-motion .oneiric-loader::after{animation:none}@keyframes oneiric-turn{to{transform:rotate(360deg)}}
.portrait-frame{width:96px;aspect-ratio:4/5;border:1px solid var(--border-normal);border-radius:48% 48% 42% 42%;position:relative;background:radial-gradient(circle at 50% 34%,rgba(143,163,199,.15) 0 17%,transparent 18%),linear-gradient(160deg,rgba(155,136,201,.12),rgba(7,9,13,.82));overflow:hidden}.portrait-frame::before{content:"";position:absolute;width:48%;height:44%;left:26%;bottom:11%;border-radius:45% 45% 20% 20%;background:rgba(232,228,220,.08)}.portrait-frame::after{content:"";position:absolute;left:8%;right:8%;bottom:18%;height:1px;background:var(--interaction);transform:rotate(-7deg);opacity:.45}
.dialogue-sample{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}.dialogue-copy{padding-top:4px}.dialogue-name{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--interaction)}.dialogue-copy p{font-family:var(--font-nightmare);font-size:18px;margin:8px 0;color:var(--text-primary)}
.ds-section,.nm-sheet,.fate-map{min-width:0;max-width:100%}.fate-map{overscroll-behavior-inline:contain}

/* Progressão humana: passos são nós circulares estáveis, não pills elípticos. */
.human-flow .wizard-step{width:44px!important;max-width:44px!important;min-width:44px;justify-self:center;padding-left:0;padding-right:0}
@media(max-width:620px){.human-flow .wizard-step{width:40px!important;max-width:40px!important;min-width:40px}}

/* v0.7 — Runas pessoais invocáveis: interface estável, registro da alma diegético. */
.nm-head-main{display:flex;align-items:center;justify-content:space-between;gap:12px}.nm-runes-trigger{min-height:36px;border:1px solid rgba(155,136,201,.36);border-radius:999px;background:rgba(155,136,201,.055);color:var(--dream-soft);padding:7px 12px;font-family:var(--font-human);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-dream),background var(--motion-fast) var(--ease-dream),box-shadow var(--motion-fast) var(--ease-dream)}.nm-runes-trigger span{font-size:16px;line-height:0;vertical-align:-1px}.nm-runes-trigger:hover,.nm-runes-trigger:focus-visible{border-color:var(--dream-accent);background:rgba(155,136,201,.10);box-shadow:0 0 0 3px rgba(155,136,201,.07);outline:none}.nm-runes-dialog{width:min(760px,calc(100vw - 28px));max-height:min(86vh,820px);padding:0;border:1px solid rgba(155,136,201,.34);border-radius:18px;background:linear-gradient(145deg,rgba(12,14,21,.99),rgba(19,20,31,.99));color:var(--text-primary);box-shadow:0 32px 110px rgba(0,0,0,.72),0 0 80px rgba(155,136,201,.08);overflow:auto}.nm-runes-dialog::backdrop{background:rgba(3,4,8,.78);backdrop-filter:blur(9px)}.no-blur .nm-runes-dialog::backdrop{backdrop-filter:none}.nm-runes-frame{position:relative;padding:26px 26px 22px;min-height:340px}.nm-runes-frame::before,.nm-runes-frame::after{content:"";position:absolute;pointer-events:none}.nm-runes-frame::before{inset:13px;border:1px solid rgba(155,136,201,.15);clip-path:polygon(0 0,33% 0,33% 1px,100% 1px,100% 74%,calc(100% - 1px) 74%,calc(100% - 1px) 100%,68% 100%,68% calc(100% - 1px),0 calc(100% - 1px))}.nm-runes-frame::after{width:180px;height:180px;border:1px solid rgba(155,136,201,.08);border-radius:50%;right:-78px;top:-82px;box-shadow:0 0 80px rgba(155,136,201,.04)}.nm-runes-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;position:relative;z-index:1}.nm-runes-top h3{margin:5px 0 0;font-family:var(--font-nightmare);font-size:28px;font-weight:600;letter-spacing:.015em}.nm-runes-ledger{display:grid;gap:4px;margin:22px 0 18px;padding:15px 0;border-top:1px solid rgba(155,136,201,.13);border-bottom:1px solid rgba(155,136,201,.13)}.nm-runes-ledger .nm-rune{display:grid;width:100%;margin:0;padding:8px 10px;border-radius:9px}.nm-runes-ledger .nm-rune-script{color:var(--dream-soft);min-height:1.55em}.nm-runes-ledger .nm-rune-translation{font-family:var(--font-human);font-size:13px;line-height:1.55;color:var(--text-primary)}.nm-runes-origin{display:flex;gap:10px;align-items:flex-start;color:var(--text-secondary);font-size:11px;line-height:1.55;position:relative;z-index:1}.rune-origin-mark{width:13px;height:13px;border:1px solid var(--dream-accent);border-radius:50%;position:relative;flex:none;margin-top:2px}.rune-origin-mark::after{content:"";position:absolute;left:4px;top:4px;width:3px;height:3px;border-radius:50%;background:var(--dream-accent)}.nm-runes-frame[data-rune-phase="definitiva"] .rune-origin-mark{box-shadow:0 0 0 4px rgba(198,168,106,.08);border-color:var(--divine)}.nm-runes-frame[data-rune-phase="definitiva"] .rune-origin-mark::after{background:var(--divine)}
@media(max-width:620px){.nm-head-main{gap:8px}.nm-runes-trigger{padding:7px 9px;font-size:10px}.nm-runes-frame{padding:21px 17px 18px}.nm-runes-top h3{font-size:24px}.nm-runes-dialog{width:calc(100vw - 18px);max-height:90vh}.nm-runes-ledger .nm-rune{padding:7px 5px}.nm-runes-ledger .nm-rune-glyph{width:.48em}}
@media(prefers-reduced-motion:reduce){.nm-runes-trigger{transition:none}}


/* ========================================================================== */
/* v0.8.0 — REGISTRO DA ALMA / FICHA FINAL                                   */
/* Recompensa final: robustez de ficha de RPG, identidade Dark Oneiric própria. */
/* ========================================================================== */
.nm-soul-sheet{
  --soul-metal:#C6A86A;
  --soul-ink:#E8E4DC;
  --soul-dim:#AAB2C0;
  --soul-violet:#9B88C9;
  --soul-blue:#8FA3C7;
  --soul-danger:#D66A72;
  --soul-panel:rgba(13,16,24,.78);
  position:relative;
  margin:20px auto 8px;
  padding:clamp(18px,3vw,34px);
  max-width:1180px;
  border:1px solid rgba(198,168,106,.28);
  border-radius:24px;
  background:
    radial-gradient(circle at 14% 0%,rgba(143,163,199,.10),transparent 28%),
    radial-gradient(circle at 88% 16%,rgba(155,136,201,.09),transparent 28%),
    linear-gradient(150deg,rgba(18,22,33,.98),rgba(8,10,15,.99) 58%,rgba(13,11,18,.99));
  box-shadow:0 32px 90px rgba(0,0,0,.42),inset 0 0 0 1px rgba(255,255,255,.012);
  overflow:hidden;
  isolation:isolate;
}
.nm-soul-sheet::before{
  content:"";position:absolute;inset:12px;pointer-events:none;z-index:-1;
  border:1px solid rgba(198,168,106,.10);
  clip-path:polygon(0 0,22% 0,22% 1px,76% 1px,76% 0,100% 0,100% 31%,calc(100% - 1px) 31%,calc(100% - 1px) 77%,100% 77%,100% 100%,68% 100%,68% calc(100% - 1px),30% calc(100% - 1px),30% 100%,0 100%,0 68%,1px 68%,1px 26%,0 26%);
}
.nm-soul-sheet::after{
  content:"";position:absolute;left:50%;top:-210px;width:520px;height:520px;translate:-50% 0;
  border:1px solid rgba(155,136,201,.055);border-radius:50%;z-index:-2;pointer-events:none;
  box-shadow:0 0 120px rgba(155,136,201,.035);
}
.soul-frame-corner{position:absolute;width:44px;height:44px;border-color:rgba(198,168,106,.42);pointer-events:none}
.soul-frame-corner-a{left:8px;top:8px;border-left:1px solid;border-top:1px solid}
.soul-frame-corner-b{right:8px;bottom:8px;border-right:1px solid;border-bottom:1px solid}

.soul-sheet-hero{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(210px,300px);gap:20px;align-items:center;padding:4px 2px 22px;border-bottom:1px solid rgba(198,168,106,.15)}
.soul-avatar{
  width:86px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;position:relative;
  border:1px solid rgba(143,163,199,.52);background:radial-gradient(circle,rgba(143,163,199,.14),rgba(8,10,15,.86) 66%);
  box-shadow:0 0 0 6px rgba(143,163,199,.035),0 0 42px rgba(143,163,199,.08);
}
.soul-avatar::before,.soul-avatar::after{content:"";position:absolute;border:1px solid rgba(155,136,201,.34);border-radius:50%}
.soul-avatar::before{inset:9px;border-right-color:transparent;transform:rotate(32deg)}
.soul-avatar::after{inset:20px;border-left-color:transparent;transform:rotate(-26deg)}
.soul-avatar span{font-family:var(--font-nightmare);font-size:24px;color:var(--soul-ink);letter-spacing:.08em;z-index:1}
.soul-identity h3{margin:4px 0 5px!important;font-family:var(--font-nightmare);font-size:clamp(28px,4vw,46px)!important;font-weight:560!important;letter-spacing:.01em;color:var(--soul-ink)!important}
.soul-true-name{display:flex;align-items:baseline;gap:9px;margin-bottom:12px;color:var(--soul-dim)}
.soul-true-name span{font-size:9px;text-transform:uppercase;letter-spacing:.18em}
.soul-true-name b{font-family:var(--font-nightmare);font-size:16px;color:var(--soul-metal);font-weight:560}
.soul-chip-row{display:flex;flex-wrap:wrap;gap:7px}
.soul-chip{
  display:inline-flex;align-items:center;min-height:29px;padding:5px 9px;border:1px solid rgba(143,163,199,.20);border-radius:7px;
  background:rgba(143,163,199,.045);color:var(--soul-dim);font-size:10px;letter-spacing:.04em;
}
.soul-chip-stage{border-color:rgba(155,136,201,.30);color:#C9BCEB;background:rgba(155,136,201,.065)}
.soul-rank-high{border-color:rgba(198,168,106,.32)!important;color:#D4BD82!important;background:rgba(198,168,106,.055)!important}
.soul-rank-divine{border-color:rgba(198,168,106,.58)!important;color:#E6D19A!important;box-shadow:0 0 22px rgba(198,168,106,.08)}
.soul-aspect-seal{min-height:150px;padding:18px 18px 16px;display:flex;flex-direction:column;justify-content:center;position:relative;text-align:center;border-left:1px solid rgba(155,136,201,.15)}
.soul-aspect-seal small{font-size:9px;letter-spacing:.20em;text-transform:uppercase;color:var(--soul-violet)}
.soul-aspect-seal strong{display:block;margin:7px 0 5px;font-family:var(--font-nightmare);font-size:clamp(20px,2.4vw,29px);font-weight:570;color:var(--soul-ink)}
.soul-aspect-seal>span:last-child{font-size:10px;line-height:1.5;color:var(--soul-dim)}
.soul-seal-rings{position:absolute;inset:7px 16%;border:1px solid rgba(155,136,201,.10);border-radius:50%;pointer-events:none}
.soul-seal-rings::before,.soul-seal-rings::after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(143,163,199,.08)}
.soul-seal-rings::before{inset:13px;border-right-color:transparent;transform:rotate(21deg)}
.soul-seal-rings::after{inset:27px;border-left-color:transparent;transform:rotate(-18deg)}

.soul-transition{display:grid;grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;gap:5px 12px;margin:15px 0 18px;color:var(--soul-dim)}
.soul-transition>span{text-align:right;font-size:11px}.soul-transition>b{font-size:11px;color:var(--soul-ink)}
.soul-transition>i{height:1px;background:linear-gradient(90deg,transparent,var(--soul-violet),var(--soul-metal),transparent);position:relative}
.soul-transition>i::after{content:"◇";position:absolute;left:50%;top:50%;translate:-50% -50%;font-style:normal;font-size:10px;color:var(--soul-metal);background:#0E1119;padding:0 5px}
.soul-transition>small{grid-column:1/-1;text-align:center;font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint)}

.soul-sheet-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
.soul-column-human{grid-column:1}.soul-column-core{grid-column:2}.soul-column-judgment{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}
.soul-column{display:grid;gap:12px;min-width:0}
.soul-panel{
  position:relative;min-width:0;padding:15px;border:1px solid rgba(143,163,199,.14);border-radius:14px;
  background:linear-gradient(145deg,rgba(18,22,32,.68),rgba(8,11,17,.82));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.015);
  break-inside:avoid;
}
.soul-panel::after{content:"";position:absolute;left:14px;bottom:-1px;width:42px;height:1px;background:var(--soul-violet);opacity:.32}
.soul-panel-title{display:flex;align-items:center;gap:9px;margin-bottom:12px}
.soul-panel-title>span{width:25px;height:25px;border:1px solid rgba(143,163,199,.20);border-radius:50%;display:grid;place-items:center;font-size:8px;color:var(--soul-blue);font-family:var(--font-mono)}
.soul-panel-title small{display:block;font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);line-height:1.2}
.soul-panel-title h4{margin:2px 0 0;font-family:var(--font-nightmare);font-size:17px;font-weight:570;color:var(--soul-ink)}

.soul-stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.soul-stat{min-height:62px;border:1px solid rgba(143,163,199,.16);border-radius:10px;padding:9px;display:flex;flex-direction:column;justify-content:space-between;background:rgba(6,9,14,.40)}
.soul-stat span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--soul-dim)}
.soul-stat b{font-family:var(--font-nightmare);font-size:25px;line-height:1;color:var(--soul-ink);font-weight:560}
.soul-resource-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:10px;border:1px solid rgba(198,168,106,.12);border-radius:10px;overflow:hidden;background:rgba(198,168,106,.08)}
.soul-resource-strip>div{padding:8px 9px;background:#0A0D13;display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.soul-resource-strip span{font-size:8px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}
.soul-resource-strip b{font-size:14px;color:var(--soul-metal)}
.soul-human-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.soul-human-meta>div{min-width:0}
.soul-human-meta span,.soul-human-line span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-faint);margin-bottom:2px}
.soul-human-meta b{font-size:11px;color:var(--soul-ink);font-weight:600;overflow-wrap:anywhere}
.soul-human-line{margin:8px 0!important;font-size:11px;line-height:1.5;color:var(--soul-dim)}
.soul-human-record .soul-chip-row{margin-top:10px}

.soul-aspect-name{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:9px}
.soul-aspect-name span{font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--soul-metal)}
.soul-aspect-name strong{font-family:var(--font-nightmare);font-size:24px;color:var(--soul-ink);text-align:right;font-weight:560}
.soul-aspect-panel>p,.soul-ability-panel>p,.soul-attribute p,.soul-flaw-panel p,.soul-appraisal-panel p{font-size:12px;line-height:1.62;color:var(--soul-dim);margin:7px 0}
.soul-ability-panel{border-color:rgba(155,136,201,.23)}
.soul-ability-name{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:9px;border-bottom:1px solid rgba(155,136,201,.12)}
.soul-ability-name strong{font-family:var(--font-nightmare);font-size:22px;font-weight:570;color:#CEC3ED}
.soul-ability-name span{font-size:9px;color:var(--soul-violet);text-align:right}
.soul-ability-meta{font-family:var(--font-mono);font-size:9px!important;letter-spacing:.035em;color:var(--text-faint)!important}
.soul-rule{margin-top:10px;padding:9px 10px;border-left:2px solid rgba(155,136,201,.42);background:rgba(155,136,201,.045)}
.soul-rule>span{font-size:8px;text-transform:uppercase;letter-spacing:.15em;color:var(--soul-violet)}
.soul-rule p{margin:3px 0 0!important}

.soul-attribute-list{display:grid;gap:8px}
.soul-attribute{display:grid;grid-template-columns:22px 1fr;gap:9px;align-items:start;padding:9px;border:1px solid rgba(143,163,199,.11);border-radius:9px;background:rgba(8,11,17,.43)}
.soul-attribute-glyph{width:14px;height:14px;border:1px solid var(--soul-blue);transform:rotate(45deg);margin:5px 0 0 2px;opacity:.7;position:relative}
.soul-attribute-glyph::after{content:"";position:absolute;inset:3px;border:1px solid var(--soul-violet)}
.soul-attribute-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.soul-attribute-head b{font-size:12px;color:var(--soul-ink)}
.soul-attribute-head small{font-size:8px;color:var(--soul-blue);text-align:right}

.soul-fate-panel .fate-map{margin:2px 0 0!important;padding:10px!important;background:rgba(7,9,14,.42)!important;border-color:rgba(155,136,201,.12)!important}
.soul-fate-panel .fate-map h4{display:none}

.soul-flaw-panel{border-color:rgba(214,106,114,.30);background:linear-gradient(150deg,rgba(63,24,31,.16),rgba(9,10,16,.86))}
.soul-flaw-panel::after{background:var(--soul-danger);opacity:.42}
.soul-flaw-name{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.soul-flaw-name strong{font-family:var(--font-nightmare);font-size:21px;color:#E7B0B5;font-weight:570}
.soul-crack-mark{width:20px;height:28px;position:relative;flex:none}
.soul-crack-mark::before{content:"";position:absolute;left:10px;top:0;width:1px;height:26px;background:var(--soul-danger);transform:rotate(12deg);box-shadow:-4px 8px 0 -0.2px var(--soul-danger),4px 15px 0 -0.2px var(--soul-danger)}
.soul-appraisal-panel{border-color:rgba(198,168,106,.25)}
.soul-appraisal-grade{padding:10px 0 11px;border-bottom:1px solid rgba(198,168,106,.13);text-align:center}
.soul-appraisal-grade small{display:block;font-size:8px;letter-spacing:.17em;text-transform:uppercase;color:var(--text-faint)}
.soul-appraisal-grade strong{display:block;margin-top:4px;font-family:var(--font-nightmare);font-size:28px;font-weight:560;color:var(--soul-metal)}
.soul-appraisal-text{font-style:italic}
.soul-ledger{display:grid;gap:4px;margin:10px 0;padding-top:8px;border-top:1px solid rgba(198,168,106,.10)}
.soul-ledger p{display:flex;gap:7px;margin:0!important;font-size:10px!important}
.soul-ledger span{color:var(--soul-metal)}
.soul-spell-comment{margin:12px 0 0;padding:10px 11px;border-left:1px solid var(--soul-metal);background:rgba(198,168,106,.035);font-family:var(--font-nightmare);font-size:13px;line-height:1.55;color:#DDD2B5}
.soul-core-orbit{width:92px;aspect-ratio:1;margin:3px auto 12px;border:1px solid rgba(143,163,199,.18);border-radius:50%;display:grid;place-items:center;position:relative;background:radial-gradient(circle,rgba(143,163,199,.12),transparent 58%)}
.soul-core-orbit::before,.soul-core-orbit::after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(155,136,201,.13)}
.soul-core-orbit::before{inset:10px;border-right-color:transparent;transform:rotate(23deg)}
.soul-core-orbit::after{inset:22px;border-left-color:transparent}
.soul-core-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--soul-blue);box-shadow:0 0 18px rgba(143,163,199,.52);top:9px;left:41px}
.soul-core-orbit b{font-family:var(--font-nightmare);font-size:24px;color:var(--soul-ink);z-index:1}
.soul-core-orbit small{position:absolute;bottom:17px;font-size:7px;letter-spacing:.13em;text-transform:uppercase;color:var(--text-faint)}
.soul-saturation>span{display:flex;justify-content:space-between;font-size:9px;color:var(--soul-dim)}
.soul-saturation>div{height:5px;border:1px solid rgba(143,163,199,.18);border-radius:99px;overflow:hidden;margin-top:5px;background:rgba(0,0,0,.35)}
.soul-saturation>div>i{display:block;height:100%;background:linear-gradient(90deg,var(--soul-blue),var(--soul-violet));min-width:0}

.soul-inventory-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.soul-inventory-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.soul-inventory-card{display:grid;grid-template-columns:24px 1fr;gap:8px;align-items:center;min-height:48px;padding:8px;border:1px solid rgba(143,163,199,.12);border-radius:9px;background:rgba(7,9,14,.45)}
.soul-item-mark{width:14px;height:18px;border:1px solid var(--soul-blue);border-radius:45% 45% 38% 38%;justify-self:center;position:relative;opacity:.75}
.soul-item-mark::after{content:"";position:absolute;left:3px;right:3px;top:6px;height:1px;background:var(--soul-violet);transform:rotate(-18deg)}
.soul-inventory-card b{display:block;font-size:11px;color:var(--soul-ink)}
.soul-inventory-card small{display:block;margin-top:2px;font-size:8px;color:var(--text-faint)}
.soul-empty{display:flex;align-items:center;gap:8px;min-height:48px;padding:8px;border:1px dashed rgba(143,163,199,.12);border-radius:9px;color:var(--text-faint);font-size:10px}
.soul-empty>span:first-child{color:var(--soul-violet)}

.soul-sheet-footer{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;margin-top:14px;padding:13px 2px 0;border-top:1px solid rgba(198,168,106,.14)}
.soul-footer-mark{width:22px;height:22px;border:1px solid var(--soul-metal);border-radius:50%;border-right-color:transparent;transform:rotate(18deg);opacity:.68}
.soul-sheet-footer p{margin:0;font-size:10px;line-height:1.5;color:var(--soul-dim)}
.soul-sheet-footer small{font-size:8px;letter-spacing:.06em;color:var(--text-faint);text-align:right}

@media(max-width:980px){
  .soul-sheet-hero{grid-template-columns:auto 1fr}.soul-aspect-seal{grid-column:1/-1;border-left:0;border-top:1px solid rgba(155,136,201,.12);min-height:110px}
  .soul-sheet-grid{grid-template-columns:1fr 1fr}.soul-column-human{grid-column:1}.soul-column-core{grid-column:2}.soul-column-judgment{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
  .nm-soul-sheet{padding:16px 12px;border-radius:18px}
  .soul-sheet-hero{grid-template-columns:64px minmax(0,1fr);gap:12px}.soul-avatar{width:62px}.soul-avatar span{font-size:18px}
  .soul-identity h3{font-size:28px!important}.soul-state-row{gap:5px}.soul-chip{font-size:9px}
  .soul-transition{grid-template-columns:minmax(0,1fr) 36px minmax(0,1fr);gap:4px 7px}
  .soul-sheet-grid,.soul-inventory-grid{grid-template-columns:1fr}.soul-column-human,.soul-column-core,.soul-column-judgment{grid-column:1;grid-template-columns:1fr}
  .soul-human-meta{grid-template-columns:1fr 1fr}.soul-inventory-list{grid-template-columns:1fr}
  .soul-sheet-footer{grid-template-columns:auto 1fr}.soul-sheet-footer small{grid-column:1/-1;text-align:left;padding-left:34px}
}
@media(max-width:420px){
  .soul-stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.soul-stat{min-height:58px;padding:7px}.soul-stat b{font-size:21px}
  .soul-resource-strip{grid-template-columns:1fr 1fr}.soul-human-meta{grid-template-columns:1fr}
  .soul-aspect-name,.soul-ability-name,.soul-attribute-head{display:block}.soul-aspect-name strong,.soul-attribute-head small{display:block;text-align:left;margin-top:4px}
  .soul-ability-name span{display:block;text-align:left;margin-top:4px}
}

@media print{
  @page{size:A4 portrait;margin:9mm}
  html,body{background:#fff!important}
  body::before,body::after,.app-shell::before{display:none!important}
  .nm-ending{padding:0!important;border:0!important;background:#fff!important}
  .nm-soul-sheet{
    --soul-metal:#68552D;--soul-ink:#111317;--soul-dim:#333A44;--soul-violet:#5E4F82;--soul-blue:#4B607F;--soul-danger:#8C3740;
    max-width:none!important;margin:0!important;padding:9mm!important;border:1px solid #8A7A58!important;border-radius:0!important;
    background:#fff!important;color:#111!important;box-shadow:none!important;overflow:visible!important;
    print-color-adjust:exact;-webkit-print-color-adjust:exact;
  }
  .nm-soul-sheet::after{display:none!important}.nm-soul-sheet::before{border-color:#B8AA8E!important}
  .soul-panel,.soul-stat,.soul-resource-strip>div,.soul-inventory-card,.soul-empty,.soul-rule,.soul-spell-comment,.soul-fate-panel .fate-map,.soul-attribute{
    background:#fff!important;color:#111!important;box-shadow:none!important;
  }
  .soul-panel{border-color:#B8B0A2!important}
  .soul-sheet-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:7px!important}
  .soul-column-human{grid-column:1!important}.soul-column-core{grid-column:2!important}
  .soul-column-judgment{grid-column:1/-1!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}
  .soul-core-panel{grid-column:1/-1!important}
  .soul-sheet-hero{grid-template-columns:auto minmax(0,1fr) minmax(180px,260px)!important}
  .soul-aspect-seal{grid-column:auto!important;border-top:0!important;border-left:1px solid #C8BEDA!important}
  .soul-inventory-grid{grid-template-columns:1fr 1fr!important;gap:7px!important}
  .soul-inventory-list{grid-template-columns:1fr!important}
  .soul-panel-title h4,.soul-identity h3,.soul-aspect-seal strong,.soul-aspect-name strong,.soul-ability-name strong,.soul-flaw-name strong,.soul-appraisal-grade strong,.soul-inventory-card b,.soul-stat b,.soul-human-meta b{color:#111!important}
  .soul-panel p,.soul-human-line,.soul-sheet-footer p,.soul-true-name,.soul-chip,.soul-attribute-head small,.soul-ability-meta,.soul-core-panel .muted{color:#333!important}
  .soul-flaw-panel{border-color:#B78085!important}.soul-appraisal-panel{border-color:#A59165!important}
  .soul-avatar{box-shadow:none!important;background:#fff!important}
  .soul-seal-rings,.soul-core-orbit::before,.soul-core-orbit::after{opacity:.55}
  .soul-chip{background:#fff!important}.soul-sheet-footer{break-inside:avoid}
  .nm-ending .actions{display:none!important}
}


/* ========================================================================== */
/* v0.8.1 — HOTFIX DE PLAYTEST: continuidade visual e mobile                  */
/* Achados reproduzidos na auditoria humana da v0.7.2, preservados na v0.8.0. */
/* ========================================================================== */

/* A cor final agora é medida do próprio elemento pelo JS. O último trecho da
   animação converge para ela, em vez de estalar do brilho ritual para a cor normal. */
@keyframes nm-word-emerge{
  0%{opacity:0;color:rgb(var(--phrase-glow)/0);filter:blur(var(--phrase-emerge-blur)) brightness(.24);transform:translateY(var(--phrase-emerge-shift));text-shadow:0 0 20px rgb(var(--phrase-glow)/0)}
  26%{opacity:.18;color:rgb(var(--phrase-glow)/.18);filter:blur(3.6px) brightness(.50);text-shadow:0 0 18px rgb(var(--phrase-glow)/.10)}
  55%{opacity:.58;color:rgb(var(--phrase-glow)/.62);filter:blur(1.7px) brightness(.84);transform:translateY(1px);text-shadow:0 0 15px rgb(var(--phrase-glow)/.16)}
  78%{opacity:.92;color:rgb(var(--phrase-glow)/.88);filter:blur(.45px) brightness(1.06);transform:translateY(.2px);text-shadow:0 0 9px rgb(var(--phrase-glow)/.10)}
  100%{opacity:1;color:var(--phrase-final-color);filter:none;transform:none;text-shadow:none}
}
@keyframes nm-word-emerge-no-blur{
  0%{opacity:0;color:rgb(var(--phrase-glow)/0);transform:translateY(var(--phrase-emerge-shift))}
  58%{opacity:.72;color:rgb(var(--phrase-glow)/.72)}
  100%{opacity:1;color:var(--phrase-final-color);transform:none}
}

/* Ornamentos pertencem à mesma unidade de revelação que o texto. */
.nm-item-pending::before{opacity:0!important}
.nm-you.nm-item-pending{border-left-color:transparent!important}
.nm-item-pending>.nm-reveal-marker{visibility:hidden}
.nm-item-pending .nm-rune-hint{visibility:hidden}

/* A runa ocupa exatamente a mesma geometria antes, durante e depois. */
.nm-rune.nm-phrase{display:inline-grid}
.nm-runes-dialog{overflow-y:auto;overflow-x:hidden}
.nm-runes-frame{overflow:hidden}

/* No touch, o :hover preso não pode vencer a preferência global de tradução. */
@media(hover:none){
  .translate-runes .nm-rune:hover .nm-rune-script{opacity:.09;filter:blur(2px)}
  .translate-runes .nm-rune:hover .nm-rune-translation{opacity:1;filter:none;transform:none}
  .no-blur.translate-runes .nm-rune:hover .nm-rune-script{filter:none}
}

/* O botão de aceleração acompanha a viewport, em vez de ficar depois de todo o
   espaço invisível reservado pela narrativa. */
.nm-reveal-tools{
  position:fixed;right:18px;bottom:max(16px,env(safe-area-inset-bottom));z-index:20;
  min-height:0;margin:0;pointer-events:none
}
.nm-skip{
  pointer-events:auto;min-height:44px;padding:10px 14px;border:1px solid rgba(143,163,199,.24);
  border-radius:10px;background:rgba(9,12,18,.92);backdrop-filter:blur(10px);
  box-shadow:0 10px 34px rgba(0,0,0,.30);color:var(--text-secondary);font-size:11px
}
.no-blur .nm-skip{backdrop-filter:none}
.nm-skip:hover,.nm-skip:focus-visible{color:var(--text-primary);border-color:var(--interaction);outline:none}

/* O resultado E1 não é mostrado no cabeçalho antes do Feitiço terminar de revelá-lo. */
.nm-sealed-state{display:none}
.nm-condition-final{display:contents}
.nm-condition--sealed .nm-sealed-state{display:inline-flex;border-color:rgba(155,136,201,.28);color:var(--dream-soft)}
.nm-condition--sealed .nm-condition-final{display:none}

/* "Reduzir efeitos" realmente amortece a manifestação, sem removê-la. */
.reduce-effects{--phrase-emerge-blur:2px;--phrase-emerge-shift:1px}
.reduce-effects .nm-word-wave.is-entering .nm-word{ text-shadow:none!important }
.reduce-effects .nm-phrase.is-entering:not(.nm-word-wave){text-shadow:none!important}

/* Alvos de toque principais seguem 44px no mobile. */
@media(max-width:620px){
  .brand,.topbar .btn,.nm-runes-trigger,.nm-skip{min-height:44px}
  .brand{display:flex;align-items:center}
  .nm-runes-ledger .nm-rune{min-height:44px;padding-top:10px;padding-bottom:10px}
  .nm-story .nm-rune{min-height:44px;padding:10px 5px;margin:-10px -5px;align-items:center}
  .nm-reveal-tools{right:10px;bottom:max(10px,env(safe-area-inset-bottom))}
}

/* v0.8.2 — a ficha vive dentro de uma coluna de leitura estreita. Em vez de
   forçar três trilhas maiores que o próprio documento, o desktop usa duas
   colunas estáveis e reserva a faixa inferior para julgamento. */
.soul-sheet-grid,.soul-column,.soul-panel{min-width:0}
.soul-panel-title h4,.soul-aspect-name strong,.soul-flaw-name strong,.soul-appraisal-grade strong{overflow-wrap:normal;word-break:normal}
@media print{
  .soul-attribute{border-color:#B8B0A2!important}
  .soul-attribute p,.soul-attribute-head b,.soul-attribute-head small{color:#222!important}
  .soul-panel-title h4{hyphens:none!important;word-break:normal!important;overflow-wrap:normal!important}
}


/* v0.8.4 — histórico local de tentativas e legibilidade dos Fios no PDF */
.nightmare-access-list{
  margin:18px 0 10px;padding:13px 14px;border:1px solid rgba(143,163,199,.14);
  border-radius:12px;background:rgba(8,11,17,.34)
}
.nightmare-access-list .eyebrow{margin-bottom:9px}
.nightmare-access-list .actions{margin:0}
@media(max-width:620px){
  .nightmare-access-list .actions{display:grid;grid-template-columns:1fr}
  .nightmare-access-list .btn{width:100%;justify-content:flex-start;text-align:left}
}
@media print{
  /* O diagrama SVG de 760 unidades encolhia demais em uma coluna A4.
     Na impressão usamos a representação vertical responsiva, com texto real. */
  .soul-fate-panel .fate-map-desktop{display:none!important}
  .soul-fate-panel .fate-map-mobile{display:block!important}
  .soul-fate-panel .fate-mobile-node{background:#fff!important;border-color:#999!important;padding:7px 8px!important}
  .soul-fate-panel .fate-mobile-node small{font-size:8pt!important;color:#444!important}
  .soul-fate-panel .fate-mobile-node b{font-size:10pt!important;color:#111!important;line-height:1.25!important}
  .soul-fate-panel .fate-mobile-thread,
  .soul-fate-panel .fate-mobile-branches::before,
  .soul-fate-panel .fate-mobile-branches span::before{background:#777!important}
}


/* v0.8.5 — evita página A4 vazia após o Registro da Alma. */
@media print{
  .container,.nightmare,.nm-act,.nm-ending,.nm-sheet{
    padding-bottom:0!important;
    margin-bottom:0!important;
  }
}


/* ========================================================================== */
/* v0.8.6 — DIAGRAMAÇÃO DO REGISTRO DA ALMA / SOMENTE IMPRESSÃO              */
/* Baseline: docs/baseline-v0.8.5/. Tela desktop/mobile permanece congelada.  */
/* ========================================================================== */
@media print{
  /* Fios do Destino: em papel, a leitura é horizontal e compacta.
     Pessoa → Aspecto → Habilidade / Atributos / Falha.
     O HTML é o mesmo da versão responsiva; só a composição muda. */
  .soul-fate-panel .fate-map{
    padding:7px!important;
    margin-top:0!important;
  }
  .soul-fate-panel .fate-map-mobile{
    display:grid!important;
    grid-template-columns:minmax(58px,.78fr) 14px minmax(68px,.92fr) 20px minmax(92px,1.42fr);
    align-items:center;
    gap:4px;
    padding:1px 0!important;
  }
  .soul-fate-panel .fate-person,
  .soul-fate-panel .fate-aspect{
    align-self:center;
  }
  .soul-fate-panel .fate-mobile-node{
    min-width:0!important;
    padding:5px 6px!important;
  }
  .soul-fate-panel .fate-mobile-node small{
    margin:2px 0!important;
    font-size:8pt!important;
    line-height:1.08!important;
    letter-spacing:.08em!important;
  }
  .soul-fate-panel .fate-mobile-node b{
    font-size:9pt!important;
    line-height:1.16!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
    hyphens:none!important;
  }
  .soul-fate-panel .fate-mobile-thread{
    width:100%!important;
    height:1px!important;
    margin:0!important;
    align-self:center;
  }
  .soul-fate-panel .fate-mobile-branches{
    width:20px!important;
    height:100%!important;
    min-height:84px!important;
    margin:0!important;
    display:block!important;
    position:relative!important;
  }
  .soul-fate-panel .fate-mobile-branches::before{
    left:50%!important;
    right:auto!important;
    top:12%!important;
    bottom:12%!important;
    width:1px!important;
    height:auto!important;
  }
  .soul-fate-panel .fate-mobile-branches span{
    display:block!important;
    position:absolute!important;
    left:50%!important;
    right:0!important;
    height:1px!important;
  }
  .soul-fate-panel .fate-mobile-branches span:nth-child(1){top:16%!important}
  .soul-fate-panel .fate-mobile-branches span:nth-child(2){top:50%!important}
  .soul-fate-panel .fate-mobile-branches span:nth-child(3){top:84%!important}
  .soul-fate-panel .fate-mobile-branches span::before{
    left:0!important;
    top:0!important;
    width:100%!important;
    height:1px!important;
  }
  .soul-fate-panel .fate-mobile-leaves{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
  }
  .soul-fate-panel .fate-mobile-leaves .fate-mobile-node{
    min-height:0!important;
    text-align:left!important;
    display:grid!important;
    grid-template-columns:16px minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    column-gap:6px!important;
    align-items:center!important;
  }
  .soul-fate-panel .fate-mobile-leaves .fate-mobile-symbol{
    grid-row:1/-1!important;
    align-self:center!important;
    margin:0!important;
  }
  .soul-fate-panel .fate-mobile-leaves small,
  .soul-fate-panel .fate-mobile-leaves b{
    text-align:left!important;
  }

  /* Hierarquia de Attributes: nome > benefício > origem.
     Nenhum texto funcional desta seção fica abaixo de ~8 pt. */
  .soul-attribute{
    padding:7px!important;
    gap:7px!important;
  }
  .soul-attribute-glyph{
    width:12px!important;
    height:12px!important;
    margin-top:4px!important;
  }
  .soul-attribute-head{
    gap:7px!important;
    align-items:flex-start!important;
  }
  .soul-attribute-head b{
    font-size:9.5pt!important;
    line-height:1.18!important;
  }
  .soul-attribute-head small{
    font-size:8pt!important;
    line-height:1.18!important;
    max-width:46%!important;
  }
  .soul-attribute p{
    margin:4px 0 0!important;
    font-size:8.25pt!important;
    line-height:1.34!important;
  }

  /* Limites vira nota mecânica secundária, sem competir com o efeito. */
  .soul-rule{
    margin-top:6px!important;
    padding:6px 7px!important;
  }
  .soul-rule>span{
    display:block!important;
    font-size:8pt!important;
    line-height:1.15!important;
    letter-spacing:.09em!important;
  }
  .soul-rule p{
    margin-top:2px!important;
    font-size:8.25pt!important;
    line-height:1.34!important;
  }

  /* Appraisal mantém solenidade, mas ocupa menos altura e lê melhor no papel. */
  .soul-appraisal-grade{
    padding:6px 0 7px!important;
  }
  .soul-appraisal-grade small{
    font-size:8pt!important;
    letter-spacing:.12em!important;
  }
  .soul-appraisal-grade strong{
    margin-top:2px!important;
    font-size:18pt!important;
    line-height:1.05!important;
  }
  .soul-appraisal-text{
    font-size:8.5pt!important;
    line-height:1.4!important;
    margin:6px 0!important;
  }
  .soul-ledger{
    gap:2px!important;
    margin:6px 0!important;
    padding-top:5px!important;
  }
  .soul-ledger p{
    font-size:8pt!important;
    line-height:1.28!important;
  }
  .soul-spell-comment{
    margin-top:7px!important;
    padding:7px 8px!important;
    font-size:8.5pt!important;
    line-height:1.35!important;
  }
}


/* v0.8.6 — hotfix comprovado em PDF real: meia página não comporta cinco colunas.
   Mantém Pessoa/Aspecto no topo e Habilidade/Atributos/Falha em linhas inteiras. */
@media print{
  .soul-fate-panel .fate-map-mobile{grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr)!important;gap:5px 3px!important}
  .soul-fate-panel .fate-mobile-branches{display:none!important}
  .soul-fate-panel .fate-mobile-leaves{grid-column:1/-1!important;gap:3px!important}
  .soul-fate-panel .fate-mobile-leaves .fate-mobile-node{grid-template-columns:12px auto minmax(0,1fr)!important;grid-template-rows:auto!important;column-gap:7px!important;padding:4px 7px!important}
  .soul-fate-panel .fate-mobile-leaves .fate-mobile-node small{margin:0!important}
  .soul-fate-panel .fate-mobile-leaves .fate-mobile-symbol{grid-row:auto!important;width:9px!important;height:9px!important}
  .soul-fate-panel .fate-mobile-node small{letter-spacing:.06em!important}
  /* .ability dos cartões do Mestre não pode inflar o símbolo decorativo. */
  .soul-fate-panel .fate-mobile-symbol.ability{padding:0!important;background:transparent!important;width:9px!important;height:9px!important}
  /* A v0.8.5 eliminou a folga externa e também a margem interna da moldura. */
  .nm-sheet{padding-bottom:9mm!important}
}
