
:root{--bg:#0b0f12;--top:#223139;--nav:#0a0c0f;--panel:#11171b;--panel2:#151d22;--line:#2d3b42;--soft:#1b272d;--text:#e9edf0;--muted:#aeb8bf;--gold:#d9bb75;--bad:#d17777;--ok:#88cf9a}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,sans-serif;font-size:14px}button,input,select,textarea{font-family:inherit}.top{height:56px;background:linear-gradient(180deg,#263840,#1b262d);display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid #3b4e57}.brand{font-family:Cinzel,serif;color:#fff;font-size:20px;letter-spacing:.08em}.tabs{display:flex;gap:22px;align-items:center}.tabs button{background:transparent;border:0;color:#cfd9de;font-weight:800;text-transform:uppercase;font-size:12px;letter-spacing:.04em;cursor:pointer;height:56px}.tabs button.active{color:#fff;border-bottom:3px solid #fff}.mini{text-align:right;color:#dfe7ea;font-size:12px;line-height:1.35}.sub{height:34px;background:#070809;border-bottom:1px solid #1d2529;display:flex;gap:18px;align-items:center;padding:0 24px;overflow:auto}.sub button{background:transparent;border:0;color:#aeb8bf;text-transform:uppercase;font-size:12px;font-weight:800;cursor:pointer}.sub button.active{color:#fff}.layout{display:grid;grid-template-columns:minmax(600px,1fr) 440px;min-height:calc(100vh - 90px)}.left{padding:20px 24px;border-right:1px solid #20292e;overflow:auto}.right{padding:20px 24px;background:#080a0c;overflow:auto}.bar{background:#263940;color:#fff;font-weight:800;text-transform:uppercase;padding:8px 10px;border-left:4px solid #6f8fa0;letter-spacing:.04em}.list{border-left:4px solid #263940;background:#0d1114}.row{display:grid;grid-template-columns:250px 1fr 110px;gap:12px;align-items:start;padding:8px 10px;border-bottom:1px solid #1b2429;cursor:pointer}.row:hover,.row.active{background:#1a252a}.row b{color:#fff}.row small{color:#c7d0d5;line-height:1.4}.source{text-align:right;color:#aeb8bf;font-size:12px}.right h1{font-family:Cinzel,serif;font-size:28px;margin:0 0 12px;color:#f0f4f5;text-transform:uppercase}.right h2{font-family:Cinzel,serif;font-size:19px;color:var(--gold);margin:18px 0 8px}.right p,.right li{color:#c8d2d8;line-height:1.58}.kv{display:grid;grid-template-columns:140px 1fr;border-bottom:1px solid #202a2f;padding:8px 0}.kv b{color:#fff}.controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.btn{background:#202a30;color:#fff;border:1px solid #53646c;padding:9px 13px;font-weight:800;cursor:pointer}.btn.gold{border-color:#917333;color:#ffe2a3;background:#2a2415}.btn.bad{border-color:#884848;color:#ffd0d0;background:#2a1515}.field{margin:12px 0}.field label{display:block;font-weight:800;margin-bottom:5px}.field input,.field select,.field textarea{width:100%;background:#151b1f;color:#fff;border:1px solid #4a5961;padding:10px;border-radius:2px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.card{background:var(--panel);border:1px solid #2b373d;padding:14px}.card h3{margin:0 0 8px;color:#fff}.notice{border:1px solid #594b2c;background:#1f1a0f;color:#ffe2a3;padding:12px;margin-bottom:12px}.warn{border:1px solid #633838;background:#211111;color:#ffd5d5;padding:12px}.ok{border:1px solid #315f3b;background:#102114;color:#c8ffd2;padding:12px}.ability-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.ability{background:#11171b;border:1px solid #2e3a40;text-align:center;padding:10px}.ability b{display:block;font-size:12px;color:#dfe7eb}.ability .score{font-size:34px;font-weight:900;color:#fff}.ability small{color:#b5c0c7}.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.check{display:flex;gap:8px;align-items:flex-start;border:1px solid #2b373d;background:#11171b;padding:8px}.split{display:grid;grid-template-columns:220px 1fr;gap:14px}.cat button{display:block;width:100%;text-align:left;background:#11171b;color:#d8e0e4;border:1px solid #27333a;padding:9px;cursor:pointer}.cat button.active{background:#263940;color:#fff}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid #2a353b;padding:7px;text-align:left}.pill{display:inline-block;border:1px solid #485962;border-radius:999px;padding:3px 7px;margin:2px;color:#d9e3e8}.inventory{margin-top:14px}.qty{width:58px!important;padding:5px!important}.sheet{background:#f8f8f3;color:#111;max-width:980px;margin:0 auto;padding:18px;border:1px solid #bbb}.sheet *{color:#111}.sheet h1,.sheet h2,.sheet h3{font-family:Arial,sans-serif;text-transform:uppercase}.sheet-top{display:grid;grid-template-columns:1fr 270px;gap:12px;border:3px solid #111;padding:10px;margin-bottom:10px}.sheet-name{font-size:30px;font-weight:900}.sheet-grid{display:grid;grid-template-columns:150px 1fr 250px;gap:10px}.box{border:2px solid #111;padding:8px;margin-bottom:9px}.box h3{margin:0 0 6px;font-size:12px;border-bottom:1px solid #111}.stat{border:2px solid #111;text-align:center;padding:6px;margin-bottom:7px}.stat b{display:block;font-size:11px}.stat span{display:block;font-size:28px;font-weight:900}.sheet .table th,.sheet .table td{border-bottom:1px solid #999;padding:4px}.small-text{font-size:12px;color:#222;line-height:1.4}.sheet-actions{margin-bottom:12px}.footer-note{font-size:11px;color:#7f8a90;margin-top:20px}@media(max-width:1050px){.layout{grid-template-columns:1fr}.right{border-top:1px solid #222}.cards,.ability-grid{grid-template-columns:repeat(2,1fr)}.row{grid-template-columns:1fr}.source{text-align:left}.sheet-grid,.sheet-top{grid-template-columns:1fr}}@media print{body{background:white}.top,.sub,.right,.controls,.sheet-actions{display:none!important}.layout{display:block}.left{padding:0;border:0}.sheet{max-width:none;margin:0;border:0}.no-print{display:none!important}@page{size:A4;margin:8mm}}

.lock-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 20%,#243840,#07090b 70%);padding:24px}
.lock-card{width:min(460px,100%);background:rgba(12,17,20,.94);border:1px solid #4b626c;box-shadow:0 24px 80px rgba(0,0,0,.55);padding:28px;border-radius:18px;text-align:center}
.lock-card h1{font-family:Cinzel,serif;text-transform:uppercase;letter-spacing:.06em;margin:0 0 12px;color:#f3f6f7}
.lock-card p{color:#c8d2d8;line-height:1.55}
.lock-card input[type=password]{width:100%;background:#151b1f;color:#fff;border:1px solid #60737c;padding:12px;margin:12px 0;border-radius:8px;text-align:center;font-size:18px}
.lock-card .remember{display:flex;gap:8px;justify-content:center;color:#b7c2c8;margin:6px 0 16px}
.lock-error{color:#ffd0d0;margin-top:12px;min-height:20px}
.lock-card small{display:block;margin-top:16px;color:#8d9aa1}

.back-link{color:#ffe2a3;text-decoration:none;border:1px solid #7b6431;border-radius:999px;padding:5px 10px;margin-right:12px;font-size:12px;letter-spacing:.04em}
.brand{display:flex;align-items:center;gap:8px}
.official-sheet{background:#d9d9d3;color:#111;padding:0;max-width:980px;border:0;font-family:Arial,Helvetica,sans-serif}
.official-sheet *{color:#111}
.print-page{background:#f8f8f3;padding:18px;margin:0 auto 18px;page-break-after:always;box-shadow:0 0 0 1px #bbb}
.sheet-banner{display:grid;grid-template-columns:270px 1fr;gap:14px;align-items:end;margin-bottom:12px}
.dnd-mark{text-transform:uppercase;font-weight:900;font-size:24px;border-bottom:5px solid #111;padding:18px 0 8px}
.sheet-header-box{border:3px solid #111;padding:10px;background:#fff}
.field-line{border-bottom:1px solid #777;min-height:38px;padding:4px 6px}
.field-line span{display:block;font-weight:700;font-size:13px}
.field-line label{display:block;text-transform:uppercase;font-size:8px;color:#333;margin-top:2px}
.field-line.big{min-height:64px}.field-line.big span{font-size:28px}
.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.official-grid{display:grid;grid-template-columns:138px 1fr 310px;gap:10px}
.abilities-column{display:flex;flex-direction:column;gap:8px}
.ability-card{border:3px solid #111;border-radius:10px;text-align:center;background:#fff;padding:8px 4px}
.ability-card label{text-transform:uppercase;font-size:10px;font-weight:900;display:block}
.ability-card strong{font-size:34px;display:block;line-height:1}
.ability-card span{display:inline-block;border:2px solid #111;border-radius:999px;min-width:42px;padding:3px;margin-top:6px;background:#fff;font-weight:700}
.middle-column,.right-column{display:flex;flex-direction:column;gap:8px}
.top-combat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.small-stat{border:3px solid #111;border-radius:8px;text-align:center;background:#fff;padding:8px 4px}
.small-stat strong{display:block;font-size:24px}.small-stat label{text-transform:uppercase;font-size:8px;font-weight:900}
.official-sheet .box{border:3px solid #111;background:#fff;border-radius:8px;padding:8px;margin:0}
.official-sheet .box h3{font-size:10px;text-align:center;text-transform:uppercase;border-bottom:1px solid #111;margin:0 0 6px;padding-bottom:3px}
.official-sheet table{width:100%;border-collapse:collapse}.official-sheet td,.official-sheet th{border-bottom:1px solid #999;padding:3px 4px;font-size:12px}
.official-sheet th{text-transform:uppercase;font-size:9px}.bubble{width:18px;text-align:center;font-size:10px}
.passive-bar{border:3px solid #111;border-radius:999px;background:#fff;padding:7px 12px;display:flex;gap:12px;align-items:center}
.passive-bar strong{font-size:22px}.passive-bar span{text-transform:uppercase;font-size:10px;font-weight:900}
.hp-row{display:grid;grid-template-columns:1fr 95px;gap:8px}.hp-box strong,.hitdice-box strong{display:block;font-size:28px;text-align:center}
.hp-box label{display:block;text-align:center;text-transform:uppercase;font-size:9px;font-weight:900}
.trait-mini{min-height:58px}.features-box{min-height:190px}.equipment-box{min-height:180px}.prof-box{min-height:120px}.skills-box{min-height:330px}.saves-box{min-height:145px}.attacks-box{min-height:135px}
.spell-page{min-height:1120px}.spell-page-header{border:3px solid #111;background:#fff;padding:12px;margin-bottom:12px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;align-items:center}
.spell-page-header h2{margin:0;text-transform:uppercase;font-size:22px}.spell-slots-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.spell-slots-row div{border:2px solid #111;background:#fff;min-width:62px;text-align:center;padding:6px}.spell-slots-row b{display:block;font-size:20px}.spell-slots-row span{font-size:18px;font-weight:900}.spell-slots-row small{display:block;text-transform:uppercase;font-size:8px}
.spell-level-block{border:2px solid #111;background:#fff;margin-bottom:10px;padding:8px;break-inside:avoid}.spell-level-block h3{margin:0 0 7px;text-transform:uppercase;font-size:13px;border-bottom:1px solid #111;padding-bottom:3px}
.slots-mini{float:right;font-size:11px;font-weight:400}.spell-print-card{border-bottom:1px solid #aaa;padding:6px 0;break-inside:avoid}.spell-print-head{display:flex;justify-content:space-between;gap:10px}
.spell-print-head b{font-size:13px}.spell-print-head span{font-size:11px;text-transform:uppercase}.spell-print-meta{font-size:10px;color:#333!important;margin:2px 0}.spell-print-effect{font-size:11px;line-height:1.3}
.small-text{font-size:11px;line-height:1.35}
@media(max-width:1050px){.sheet-banner,.official-grid,.spell-page-header{grid-template-columns:1fr}.mini-grid,.top-combat-row{grid-template-columns:1fr 1fr}.official-sheet{min-height:auto}}
@media print{.official-sheet{width:100%;max-width:none;min-height:auto;padding:0;background:white}.print-page{box-shadow:none;margin:0;min-height:auto}.back-link{display:none!important}.official-grid{grid-template-columns:138px 1fr 310px}.sheet-banner{grid-template-columns:270px 1fr}.spell-page-header{grid-template-columns:1fr 1fr 1fr}}

/* v2.7 official print polish */
.back-link{color:#ffe2a3;text-decoration:none;border:1px solid #7b6431;border-radius:999px;padding:5px 10px;margin-right:12px;font-size:12px;letter-spacing:.04em}
.brand{display:flex;align-items:center;gap:8px}
.official-sheet{background:#d7d7d1;color:#111;padding:0;max-width:980px;border:0;font-family:Arial,Helvetica,sans-serif}
.official-sheet *{color:#111}
.print-page{background:#fbfbf6;padding:14px;margin:0 auto 18px;page-break-after:always;box-shadow:0 0 0 1px #aaa}
.sheet-banner{display:grid;grid-template-columns:265px 1fr;gap:12px;align-items:end;margin-bottom:9px}
.dnd-mark{text-transform:uppercase;font-weight:900;font-size:22px;border-bottom:5px solid #111;padding:18px 0 7px;letter-spacing:.02em}
.sheet-header-box{border:3px solid #111;padding:8px;background:#fff;border-radius:12px}
.field-line{border-bottom:1px solid #777;min-height:34px;padding:3px 5px}
.field-line span{display:block;font-weight:700;font-size:12px}
.field-line label{display:block;text-transform:uppercase;font-size:7px;color:#333;margin-top:2px;letter-spacing:.03em}
.field-line.big{min-height:58px}
.field-line.big span{font-size:26px}
.mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
.official-grid{display:grid;grid-template-columns:132px 1fr 302px;gap:8px}
.abilities-column{display:flex;flex-direction:column;gap:7px}
.ability-card{border:3px solid #111;border-radius:13px;text-align:center;background:#fff;padding:7px 4px;min-height:88px}
.ability-card label{text-transform:uppercase;font-size:9px;font-weight:900;display:block}
.ability-card strong{font-size:32px;display:block;line-height:1.05;margin-top:4px}
.ability-card span{display:inline-block;border:2px solid #111;border-radius:999px;min-width:40px;padding:3px;margin-top:5px;background:#fff;font-weight:700}
.middle-column,.right-column{display:flex;flex-direction:column;gap:7px}
.top-combat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.small-stat{border:3px solid #111;border-radius:10px;text-align:center;background:#fff;padding:7px 3px;min-height:62px}
.small-stat strong{display:block;font-size:23px}
.small-stat label{text-transform:uppercase;font-size:7px;font-weight:900;line-height:1.1}
.official-sheet .box{border:3px solid #111;background:#fff;border-radius:10px;padding:7px;margin:0}
.official-sheet .box h3{font-size:9px;text-align:center;text-transform:uppercase;border-bottom:1px solid #111;margin:0 0 5px;padding-bottom:3px;letter-spacing:.03em}
.official-sheet table{width:100%;border-collapse:collapse}
.official-sheet td,.official-sheet th{border-bottom:1px solid #999;padding:2px 4px;font-size:11px}
.official-sheet th{text-transform:uppercase;font-size:8px}
.bubble{width:17px;text-align:center;font-size:9px}
.passive-bar{border:3px solid #111;border-radius:999px;background:#fff;padding:6px 10px;display:flex;gap:10px;align-items:center}
.passive-bar strong{font-size:21px}
.passive-bar span{text-transform:uppercase;font-size:9px;font-weight:900}
.hp-row{display:grid;grid-template-columns:1fr 92px;gap:7px}
.hp-box strong,.hitdice-box strong{display:block;font-size:27px;text-align:center}
.hp-box label{display:block;text-align:center;text-transform:uppercase;font-size:8px;font-weight:900}
.trait-mini{min-height:52px}.features-box{min-height:178px}.equipment-box{min-height:172px}.prof-box{min-height:112px}.skills-box{min-height:316px}.saves-box{min-height:138px}.attacks-box{min-height:126px}
.spell-page{min-height:1120px}
.spell-page-header{border:3px solid #111;background:#fff;padding:10px;margin-bottom:10px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;align-items:center;border-radius:10px}
.spell-page-header h2{margin:0;text-transform:uppercase;font-size:21px}
.spell-slots-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.spell-slots-row div{border:2px solid #111;background:#fff;min-width:58px;text-align:center;padding:5px;border-radius:8px}
.spell-slots-row b{display:block;font-size:18px}.spell-slots-row span{font-size:17px;font-weight:900}.spell-slots-row small{display:block;text-transform:uppercase;font-size:7px}
.spell-level-block{border:2px solid #111;background:#fff;margin-bottom:8px;padding:7px;break-inside:avoid;border-radius:8px}
.spell-level-block h3{margin:0 0 6px;text-transform:uppercase;font-size:12px;border-bottom:1px solid #111;padding-bottom:3px}
.slots-mini{float:right;font-size:10px;font-weight:400}
.spell-print-card{border-bottom:1px solid #aaa;padding:5px 0;break-inside:avoid}
.spell-print-head{display:flex;justify-content:space-between;gap:8px}
.spell-print-head b{font-size:12px}.spell-print-head span{font-size:10px;text-transform:uppercase}
.spell-print-meta{font-size:9px;color:#333!important;margin:2px 0}
.spell-print-effect{font-size:10.5px;line-height:1.25}
.small-text{font-size:10.5px;line-height:1.3}
@media print{
  body{background:white!important}
  .top,.sub,.right,.controls,.sheet-actions{display:none!important}
  .layout{display:block!important}
  .left{padding:0!important;border:0!important}
  .official-sheet{width:100%;max-width:none;background:white}
  .print-page{box-shadow:none;margin:0;min-height:auto}
  .back-link{display:none!important}
  .official-grid{grid-template-columns:132px 1fr 302px}
  .sheet-banner{grid-template-columns:265px 1fr}
  .spell-page-header{grid-template-columns:1fr 1fr 1fr}
  @page{size:A4;margin:7mm}
}

/* v2.8 navigation + spell description polish */
.back-link{color:#ffe2a3;text-decoration:none;border:1px solid #7b6431;border-radius:999px;padding:5px 10px;margin-right:12px;font-size:12px;letter-spacing:.04em;white-space:nowrap}
.brand{display:flex;align-items:center;gap:8px}
.lock-tools-link{display:inline-block;color:#ffe2a3;text-decoration:none;border:1px solid #7b6431;border-radius:999px;padding:7px 12px;margin:12px 0}
.spell-page{min-height:1120px}
.spell-page-header{border:3px solid #111;background:#fff;padding:10px;margin-bottom:10px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;align-items:center;border-radius:10px}
.spell-page-header h2{margin:0;text-transform:uppercase;font-size:21px}
.spell-slots-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.spell-slots-row div{border:2px solid #111;background:#fff;min-width:58px;text-align:center;padding:5px;border-radius:8px}
.spell-slots-row b{display:block;font-size:18px}.spell-slots-row span{font-size:17px;font-weight:900}.spell-slots-row small{display:block;text-transform:uppercase;font-size:7px}
.spell-level-block{border:2px solid #111;background:#fff;margin-bottom:8px;padding:7px;break-inside:avoid;border-radius:8px}
.spell-level-block h3{margin:0 0 6px;text-transform:uppercase;font-size:12px;border-bottom:1px solid #111;padding-bottom:3px}
.slots-mini{float:right;font-size:10px;font-weight:400}
.spell-print-card{border-bottom:1px solid #aaa;padding:5px 0;break-inside:avoid}
.spell-print-head{display:flex;justify-content:space-between;gap:8px}
.spell-print-head b{font-size:12px}.spell-print-head span{font-size:10px;text-transform:uppercase}
.spell-print-meta{font-size:9px!important;color:#333!important;margin:2px 0}
.spell-print-effect{font-size:10.5px!important;line-height:1.25;color:#111!important}
@media print{
  .back-link,.lock-tools-link{display:none!important}
  .spell-page-header{grid-template-columns:1fr 1fr 1fr}
}
