:root{
  --ground:#EAECF0; --surface:#FCFCFD; --surface-2:#F3F4F7; --ink:#12151C; --ink-2:#3A4252;
  --muted:#697386; --line:#DCDFE6; --line-2:#C6CCD8;
  --accent:#6B2C48; --accent-soft:#6B2C4814; --accent-ink:#6B2C48;
  --crit:#B02430; --warn:#A96B0C; --good:#2F7D51; --soon:#3C63A0; --plan:#8B94A6; --idle:#BEC4D0;
  --shadow:0 1px 2px #12151c0d, 0 10px 26px -14px #12151c26;
  --focus:#6B2C48;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ground:#0C0F14; --surface:#151920; --surface-2:#1C212A; --ink:#E9ECF2; --ink-2:#B4BCCB;
  --muted:#8A93A5; --line:#232935; --line-2:#333B49;
  --accent:#D89AB4; --accent-soft:#D89AB41A; --accent-ink:#E6B4C8;
  --crit:#F08088; --warn:#DFA84C; --good:#5FBE87; --soon:#7FA6DC; --plan:#5B6478; --idle:#39414F;
  --shadow:0 1px 2px #0007, 0 14px 34px -18px #000b; --focus:#D89AB4;
}}
:root[data-theme="dark"]{
  --ground:#0C0F14; --surface:#151920; --surface-2:#1C212A; --ink:#E9ECF2; --ink-2:#B4BCCB;
  --muted:#8A93A5; --line:#232935; --line-2:#333B49;
  --accent:#D89AB4; --accent-soft:#D89AB41A; --accent-ink:#E6B4C8;
  --crit:#F08088; --warn:#DFA84C; --good:#5FBE87; --soon:#7FA6DC; --plan:#5B6478; --idle:#39414F;
  --shadow:0 1px 2px #0007, 0 14px 34px -18px #000b; --focus:#D89AB4;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--ground); color:var(--ink);
  font-family:"IBM Plex Sans",-apple-system,Segoe UI,Roboto,sans-serif; font-size:15px; line-height:1.55;
  -webkit-font-smoothing:antialiased}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace; font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit; color:inherit}
:focus-visible{outline:2px solid var(--focus); outline-offset:2px}
a{color:var(--accent-ink)}
@media (prefers-reduced-motion:reduce){*{animation:none!important; transition:none!important}}

/* ===== LOGIN ===== */
#login{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:32px 20px; background:var(--ground)}
.card-login{width:100%; max-width:430px; background:var(--surface); border:1px solid var(--line);
  border-top:3px solid var(--accent); border-radius:4px; padding:34px 32px 30px; box-shadow:var(--shadow)}
.card-login .mark{font-family:"Bodoni Moda",Georgia,serif; font-weight:700; font-size:11.5px;
  letter-spacing:.42em; text-transform:uppercase; color:var(--accent-ink); margin:0 0 8px}
.card-login h1{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:30px; margin:0 0 6px; line-height:1.1}
.card-login .sub{color:var(--muted); font-size:13.5px; margin:0 0 24px}
.tabs{display:flex; gap:2px; background:var(--surface-2); padding:3px; border-radius:3px; margin-bottom:20px}
.tabs button{flex:1; border:0; background:transparent; padding:8px 10px; border-radius:2px; font-size:13.5px;
  font-weight:600; color:var(--muted); cursor:pointer}
.tabs button[aria-selected="true"]{background:var(--surface); color:var(--ink); box-shadow:var(--shadow)}
label{display:block; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted);
  font-weight:600; margin:0 0 5px}
.field{margin-bottom:14px}
input[type=text],input[type=password],select,textarea{width:100%; padding:9px 11px; border:1px solid var(--line-2);
  border-radius:3px; background:var(--surface); font-size:14px}
textarea{resize:vertical; min-height:60px}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:7px; border:1px solid var(--accent);
  background:var(--accent); color:#fff; padding:9px 16px; border-radius:3px; font-size:13.5px; font-weight:600;
  cursor:pointer}
:root[data-theme="dark"] .btn:not(.ghost){color:#1A1016}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn:not(.ghost){color:#1A1016}}
.btn.wide{width:100%}
.btn.ghost{background:transparent; color:var(--ink); border-color:var(--line-2)}
.btn.tiny{padding:4px 9px; font-size:11.5px; border-radius:2px}
.btn[disabled]{opacity:.45; cursor:not-allowed}
.err{color:var(--crit); font-size:13px; margin-top:10px; min-height:18px}
.hint{font-size:12px; color:var(--muted); margin-top:16px; line-height:1.5}

/* ===== SHELL ===== */
#app{display:none}
header.top{background:var(--surface); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20}
.topin{max-width:1320px; margin:0 auto; padding:14px 22px 0; display:flex; flex-wrap:wrap; gap:16px; align-items:center}
.brand{font-family:"Bodoni Moda",Georgia,serif; font-weight:700; font-size:11px; letter-spacing:.4em;
  text-transform:uppercase; color:var(--accent-ink)}
.who{margin-left:auto; display:flex; align-items:center; gap:12px; font-size:12.5px; color:var(--muted)}
.who b{color:var(--ink); font-weight:600}
nav{max-width:1320px; margin:0 auto; padding:10px 22px 0; display:flex; gap:2px; overflow-x:auto}
nav button{border:0; background:transparent; padding:9px 14px 11px; font-size:13.5px; font-weight:600;
  color:var(--muted); cursor:pointer; border-bottom:2px solid transparent; white-space:nowrap}
nav button[aria-current="page"]{color:var(--ink); border-bottom-color:var(--accent)}
main{max-width:1320px; margin:0 auto; padding:26px 22px 80px}
.view{display:none} .view.on{display:block}
h2{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:23px; margin:0; letter-spacing:-.005em}
.shead{display:flex; align-items:baseline; gap:14px; border-bottom:2px solid var(--ink); padding-bottom:8px; margin:0 0 14px}
.shead .note{font-size:12.5px; color:var(--muted); margin-left:auto; text-align:right}
section{margin-bottom:42px}
.snote{font-size:13px; color:var(--muted); margin:0 0 14px; max-width:84ch}

/* ===== TILES ===== */
.tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr)); gap:1px; background:var(--line);
  border:1px solid var(--line); border-radius:3px; overflow:hidden; box-shadow:var(--shadow); margin-bottom:32px}
.tile{background:var(--surface); padding:15px 17px 14px; position:relative}
.tile::before{content:""; position:absolute; inset:0 auto 0 0; width:3px; background:var(--plan)}
.tile.t-crit::before{background:var(--crit)} .tile.t-warn::before{background:var(--warn)}
.tile.t-good::before{background:var(--good)} .tile.t-idle::before{background:var(--idle)}
.tile .k{display:block; font-size:10px; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); font-weight:600}
.tile .v{display:block; font-family:"Bodoni Moda",Georgia,serif; font-size:36px; font-weight:500; line-height:1.1;
  font-variant-numeric:tabular-nums; margin:2px 0 1px}
.tile .n{display:block; font-size:11.5px; color:var(--muted); line-height:1.4}
.tile.t-crit .v{color:var(--crit)} .tile.t-warn .v{color:var(--warn)} .tile.t-good .v{color:var(--good)}

/* ===== TABLES ===== */
.scroll{overflow-x:auto; border:1px solid var(--line); border-radius:3px; background:var(--surface); box-shadow:var(--shadow)}
table{width:100%; border-collapse:collapse; font-size:13.5px; min-width:700px}
th{background:var(--surface-2); text-align:left; font-size:10px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); font-weight:600; padding:9px 11px; border-bottom:1px solid var(--line-2); white-space:nowrap}
td{padding:9px 11px; border-bottom:1px solid var(--line); vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--surface-2)}
.num{text-align:right; white-space:nowrap} th.num{text-align:right}
.nw{white-space:nowrap} .sub{font-size:11.5px; color:var(--muted); line-height:1.4}
.strong{font-weight:600; line-height:1.35}
.crit-t{color:var(--crit); font-weight:600}
.muted{color:var(--muted)}

/* bars */
.cell-bar{min-width:170px}
.bar{display:flex; gap:2px; height:9px; border-radius:2px; overflow:hidden; background:var(--surface-2)}
.seg{display:block; min-width:3px}
.s-done{background:var(--good)} .s-crit{background:var(--crit)} .s-warn{background:var(--warn)}
.s-soon{background:var(--soon)} .s-plan{background:var(--plan)} .s-idle{background:var(--idle)}
.pct{font-size:11px; color:var(--muted); margin-top:3px}
.legend{display:flex; flex-wrap:wrap; gap:14px; font-size:11.5px; color:var(--muted); margin:12px 0 0}
.legend span{display:inline-flex; align-items:center; gap:6px}
.sw{width:11px; height:11px; border-radius:2px; display:inline-block}

/* pills */
.pill{display:inline-block; font-size:11px; font-weight:600; padding:2px 8px; border-radius:2px; white-space:nowrap;
  border:1px solid currentColor}
.p-crit{color:var(--crit)} .p-warn{color:var(--warn)} .p-good{color:var(--good)}
.p-idle{color:var(--muted)} .p-plan{color:var(--soon)} .p-acc{color:var(--accent-ink)}

/* filters */
.filters{display:flex; flex-wrap:wrap; gap:9px; margin-bottom:14px; align-items:center}
.filters select,.filters input{width:auto; padding:7px 10px; font-size:13px; border:1px solid var(--line-2);
  border-radius:3px; background:var(--surface); max-width:100%}
.filters input[type=text]{min-width:200px; flex:1 1 200px}
.filters select{max-width:280px}
.count{font-size:12.5px; color:var(--muted); margin-left:auto}

/* findings */
.finding{display:grid; grid-template-columns:52px 1fr; gap:16px; background:var(--surface); border:1px solid var(--line);
  border-left:3px solid var(--plan); border-radius:3px; padding:17px 19px; margin-bottom:10px; box-shadow:var(--shadow)}
.finding.f-crit{border-left-color:var(--crit)} .finding.f-warn{border-left-color:var(--warn)}
.fnum{font-family:"Bodoni Moda",Georgia,serif; font-size:28px; color:var(--line-2); line-height:1}
.finding.f-crit .fnum{color:var(--crit); opacity:.5}
.finding h3{margin:0 0 6px; font-size:16px; font-weight:600; line-height:1.3; text-wrap:balance}
.finding p{margin:0 0 8px; font-size:13.5px; color:var(--ink-2); line-height:1.6; max-width:78ch}
.fix{background:var(--accent-soft); border-radius:3px; padding:9px 12px; margin:0!important; color:var(--ink)!important; font-size:13px!important}
.fixlabel{display:block; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--accent-ink);
  font-weight:700; margin-bottom:3px}

/* panel / editor */
.panel{background:var(--surface); border:1px solid var(--line); border-radius:3px; padding:18px 20px;
  box-shadow:var(--shadow); margin-bottom:14px}
.panel h3{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:19px; margin:0 0 12px}
.grid2{display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:12px}
.rowacts{display:flex; flex-wrap:wrap; gap:6px; margin-top:7px}
details.edit{margin-top:6px}
details.edit>summary{cursor:pointer; font-size:12px; color:var(--accent-ink); font-weight:600; list-style:none}
details.edit>summary::-webkit-details-marker{display:none}
details.edit>summary::before{content:"▸ "; }
details.edit[open]>summary::before{content:"▾ "}
.editbox{margin-top:9px; padding:12px; background:var(--surface-2); border-radius:3px}
.callout{background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--accent);
  border-radius:3px; padding:20px 22px; box-shadow:var(--shadow)}
.callout h3{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:19px; margin:0 0 10px}
.callout ol{margin:0; padding-left:20px} .callout li{margin-bottom:7px; color:var(--ink-2); font-size:13.5px; max-width:80ch}
.callout li b{color:var(--ink)}
.toast{position:fixed; left:50%; bottom:26px; transform:translateX(-50%); background:var(--ink); color:var(--ground);
  padding:10px 18px; border-radius:3px; font-size:13.5px; font-weight:600; z-index:60; box-shadow:var(--shadow)}
.banner{background:var(--accent-soft); border:1px solid var(--line); border-left:3px solid var(--accent);
  border-radius:3px; padding:11px 14px; font-size:13px; color:var(--ink-2); margin-bottom:16px}
footer{border-top:1px solid var(--line); padding-top:16px; font-size:12px; color:var(--muted); max-width:82ch}

/* ===== МАСТЕР КАРТЫ ===== */
.k-layout{display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:20px; align-items:start}
@media (max-width:1050px){.k-layout{grid-template-columns:1fr}}
.k-coach{position:sticky; top:110px}
@media (max-width:1050px){.k-coach{position:static}}
.coach-box{background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--accent);
  border-radius:3px; padding:16px; box-shadow:var(--shadow)}
.score{display:flex; align-items:baseline; gap:9px; margin-bottom:8px}
.score-v{font-family:"Bodoni Moda",Georgia,serif; font-size:40px; line-height:1}
.score-k{font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:600}
.score.s-good .score-v{color:var(--good)} .score.s-warn .score-v{color:var(--warn)} .score.s-crit .score-v{color:var(--crit)}
.score-bar{height:5px; background:var(--surface-2); border-radius:3px; overflow:hidden; margin-bottom:14px}
.score-bar span{display:block; height:100%}
.sb-good{background:var(--good)} .sb-warn{background:var(--warn)} .sb-crit{background:var(--crit)}
.coachhd{font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--accent-ink);
  font-weight:700; margin:0 0 8px; padding-top:10px; border-top:1px solid var(--line)}
.coach-sum{font-size:12.5px; color:var(--muted); margin:0 0 8px}
.issue{border-left:3px solid var(--line-2); padding:7px 0 7px 10px; margin-bottom:8px}
.issue.i-crit{border-left-color:var(--crit)} .issue.i-ok{border-left-color:var(--good)}
.issue.i-tip{border-left-color:var(--accent)}
.i-t{font-size:12.5px; font-weight:600; margin-bottom:2px}
.i-f{font-size:12.5px; color:var(--ink-2); line-height:1.5}
.coach-acts{display:flex; flex-direction:column; gap:6px; margin-top:14px; padding-top:12px; border-top:1px solid var(--line)}
.coach-acts .btn{font-size:12.5px; padding:7px 12px}

.wnav{display:flex; gap:2px; overflow-x:auto; margin-bottom:16px; padding-bottom:4px}
.wstep{flex:1 1 0; min-width:120px; display:flex; align-items:center; gap:8px; border:1px solid var(--line);
  background:var(--surface); padding:9px 11px; border-radius:3px; cursor:pointer; text-align:left; color:var(--muted)}
.wstep .wn{width:20px; height:20px; flex:0 0 20px; border-radius:50%; background:var(--surface-2);
  display:inline-flex; align-items:center; justify-content:center; font-size:11px; font-weight:600}
.wstep .wt{font-size:12px; font-weight:600; line-height:1.25}
.wstep.on{border-color:var(--accent); color:var(--ink); box-shadow:var(--shadow)}
.wstep.on .wn{background:var(--accent); color:var(--surface)}
.wstep.ok{color:var(--ink)} .wstep.ok .wn{background:var(--good); color:#fff}
.wstep.bad .wn{background:var(--crit); color:#fff}
.wstepbox{background:var(--surface); border:1px solid var(--line); border-radius:3px; padding:20px 22px;
  box-shadow:var(--shadow)}
.wh{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:21px; margin:0 0 10px}
.wlead{font-size:13.5px; color:var(--ink-2); margin:0 0 16px; max-width:80ch; line-height:1.6}
.wbtns{display:flex; justify-content:space-between; gap:10px; margin-top:14px}
.fhint{font-size:11.5px; color:var(--muted); margin-top:4px; line-height:1.4}
.tiphint{font-size:11.5px; color:var(--crit); margin-top:4px; font-weight:600}
input.bad-in,textarea.bad-in{border-color:var(--crit); background:var(--accent-soft)}

.goalgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:10px}
.goalcard{text-align:left; background:var(--surface-2); border:1px solid var(--line); border-radius:3px;
  padding:13px 15px; cursor:pointer; display:block}
.goalcard:hover{border-color:var(--line-2)}
.goalcard.sel{border-color:var(--accent); border-left:3px solid var(--accent); background:var(--accent-soft)}
.gc-t{font-size:14px; font-weight:600; margin-bottom:4px; color:var(--ink)}
.gc-n{font-size:15px; color:var(--accent-ink); margin-bottom:5px}
.gc-note{font-size:11.5px; color:var(--muted); line-height:1.45}
.goalbar{background:var(--accent-soft); border-left:3px solid var(--accent); border-radius:3px;
  padding:9px 13px; font-size:13px; margin-bottom:14px; color:var(--ink-2)}

.stage{border:1px solid var(--line); border-radius:3px; padding:13px; margin-bottom:12px; background:var(--surface-2)}
.stage-hd{display:flex; gap:8px; align-items:center; margin-bottom:11px; flex-wrap:wrap}
.stage-n{font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); font-weight:600; white-space:nowrap}
.stage-name{flex:1 1 220px; width:auto!important}
.stage-date{width:120px!important; flex:0 0 120px}
.tcard{background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--crit);
  border-radius:3px; padding:11px 13px; margin-bottom:9px}
.tcard.ok{border-left-color:var(--good)}
.tcard-hd{display:flex; gap:9px; align-items:baseline; margin-bottom:9px}
.tnum{font-size:11px; color:var(--muted); flex:0 0 auto}
.tprev{flex:1; font-size:13px; font-weight:600; line-height:1.35}
.tprev i{font-weight:400; color:var(--muted)}
.tgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:10px}
.tgrid .field{margin-bottom:0}
.tgrid .field.wide{grid-column:1/-1}
.tasktbl{width:100%; border-collapse:collapse; margin-bottom:9px; min-width:0}
.tasktbl th{background:transparent; border-bottom:1px solid var(--line); padding:5px 6px 6px}
.tasktbl td{padding:4px 6px; border:none}
.tasktbl input{width:100%}
.exbox{background:var(--surface-2); border-radius:3px; padding:11px 14px; font-size:12.5px;
  margin-bottom:16px; line-height:1.8; color:var(--ink-2)}
.ex-bad{color:var(--crit); text-decoration:line-through}
.ex-ok{color:var(--good); font-weight:600}
.warnbox{background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--crit);
  border-radius:3px; padding:13px 16px; margin-bottom:14px; box-shadow:var(--shadow)}
.warnbox ul{margin:7px 0 0; padding-left:18px} .warnbox li{font-size:13px; color:var(--ink-2); margin-bottom:4px}
.cardview .kv{width:100%; border-collapse:collapse; font-size:13.5px; min-width:0; margin-bottom:18px}
.cardview .kv td{padding:6px 8px; border-bottom:1px solid var(--line); vertical-align:top}
.cardview .kv td:first-child{width:190px; color:var(--muted); font-size:11.5px; text-transform:uppercase;
  letter-spacing:.06em; font-weight:600; white-space:nowrap}
.stagesum{margin-bottom:14px} .stagesum ul{margin:6px 0 0; padding-left:18px}
.stagesum li{font-size:13.5px; margin-bottom:7px; color:var(--ink-2)}
.std-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:12px}
.std-grid .panel{margin-bottom:0}
.std-grid p{font-size:13px; margin:0; line-height:1.6}
.formula{display:flex; flex-wrap:wrap; align-items:center; gap:8px; background:var(--surface);
  border:1px solid var(--line); border-radius:3px; padding:14px 16px; margin-bottom:16px; box-shadow:var(--shadow)}
.fp{background:var(--accent-soft); border-radius:2px; padding:6px 11px; font-size:13px; font-weight:600}
.fp b{color:var(--accent-ink); margin-right:5px}
.fj{color:var(--muted); font-weight:600}
td.bad{color:var(--crit)} td.ok{color:var(--good); font-weight:600}
.aimodal{position:fixed; inset:0; background:#0009; display:flex; align-items:center; justify-content:center;
  padding:24px; z-index:80}
.aibox{background:var(--surface); border-radius:4px; padding:22px 24px; max-width:640px; width:100%;
  box-shadow:0 20px 60px #0006}
.aibox h3{font-family:"Bodoni Moda",Georgia,serif; font-weight:500; font-size:20px; margin:0 0 8px}
.aibox p{font-size:13.5px; margin:0 0 12px}
.aibox textarea{font-family:"IBM Plex Mono",monospace; font-size:11.5px; margin-bottom:12px; min-height:180px}
@media (max-width:640px){.finding{grid-template-columns:1fr; gap:5px} .fnum{font-size:21px} main{padding:18px 14px 60px}
 .topin,nav{padding-left:14px; padding-right:14px}}

a.btn{text-decoration:none}

/* ---- разбор карты ---- */
.nbox{display:grid; gap:14px}
.nblock h4{margin:0 0 6px; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
.nblock h4.bad{color:var(--crit)}
.nblock h4.warn{color:var(--warn)}
.nblock p{margin:0; line-height:1.55}
.nblock .ngoal{font-weight:600}
.nlist{margin:0; padding-left:18px; display:grid; gap:5px}
.nlist li{line-height:1.5}
.nlist.bad li::marker{color:var(--crit)}
.nlist.warn li::marker{color:var(--warn)}
.nblock.focus{border-left:3px solid var(--accent); padding-left:12px}
.nblock.focus p{font-weight:500}
