/* МППСС-72 / COLREG учебник. Оформление: ночной мостик как база, дневная карта как светлая тема. */
:root{
  --ground:#070e15;
  --ground-2:#0a141d;
  --surface:#0e1a24;
  --surface-2:#142330;
  --ink:#e8f0f5;
  --ink-2:#9fb4c2;
  --ink-3:#6f8798;
  --line:#1c2d3b;
  --line-2:#2a3f51;
  --accent:#5fc9e2;
  --accent-2:#2b8ba3;
  --accent-soft:#0d2530;
  --port:#ff5d4d;
  --stbd:#37c77f;
  --lamp:#fff8e6;
  --lamp-y:#f7c948;
  --amber:#f0c04a;
  --flag-mid:#f2f4f6;
  --sea-1:#0b1b28;
  --sea-2:#0e2231;
  --display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;
  --body:"Spectral",Georgia,"Times New Roman",serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --wrap:1440px;
  --pad:clamp(14px,3.5vw,40px);
  color-scheme:dark;
}
@media (prefers-color-scheme:light){
  :root:not([data-theme="dark"]){
    --ground:#eef2f1;
    --ground-2:#e6ecec;
    --surface:#fbfcfc;
    --surface-2:#e2e9ea;
    --ink:#0d1a22;
    --ink-2:#425865;
    --ink-3:#69808e;
    --line:#ccd8dc;
    --line-2:#adbfc6;
    --accent:#0b6c82;
    --accent-2:#0b6c82;
    --accent-soft:#dcecef;
    --port:#c9352a;
    --stbd:#12784b;
    --lamp:#fffdf2;
    --lamp-y:#e0a600;
    --amber:#8f6d14;
    --flag-mid:#dfe6e8;
    --sea-1:#c4d6dc;
    --sea-2:#b3c9d1;
    color-scheme:light;
  }
}
:root[data-theme="light"]{
  --ground:#eef2f1;--ground-2:#e6ecec;--surface:#fbfcfc;--surface-2:#e2e9ea;
  --ink:#0d1a22;--ink-2:#425865;--ink-3:#69808e;--line:#ccd8dc;--line-2:#adbfc6;
  --accent:#0b6c82;--accent-2:#0b6c82;--accent-soft:#dcecef;
  --port:#c9352a;--stbd:#12784b;--lamp:#fffdf2;--lamp-y:#e0a600;--amber:#8f6d14;--flag-mid:#dfe6e8;
  --sea-1:#c4d6dc;--sea-2:#b3c9d1;color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4{font-family:var(--display);margin:0;line-height:1.12;text-wrap:balance;letter-spacing:.005em}
p{margin:0}
a{color:var(--accent)}
img,svg{max-width:100%}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.mono{font-family:var(--mono)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- шапка ---------- */
.masthead{position:relative;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--ground-2),var(--sea-1))}
.masthead .seaart{position:absolute;inset:auto 0 0 0;height:120px;opacity:.85;pointer-events:none}
.masthead .wrap{position:relative;padding-top:18px;padding-bottom:0}
.topbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;justify-content:space-between}
.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
.toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-left:auto}
/* line-height задан явно: без него <summary> выбора языка наследует межстрочный
   интервал текста и получается выше кнопок на 3.6 пикселя. */
.chip{font-family:var(--mono);font-size:11.5px;line-height:normal;padding:6px 10px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);cursor:pointer;border-radius:2px;display:inline-flex;gap:6px;align-items:center}
.chip:hover{border-color:var(--accent);color:var(--ink)}
.chip[aria-pressed="true"]{border-color:var(--accent);color:var(--ink);background:var(--accent-soft)}
.langbox{position:relative}
.langbox>summary{list-style:none;cursor:pointer}
.langbox>summary::-webkit-details-marker{display:none}
.langmenu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--surface);border:1px solid var(--line-2);min-width:190px;padding:6px;display:grid;gap:2px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.langmenu a{display:flex;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:12px;text-decoration:none;color:var(--ink-2);padding:6px 8px}
.langmenu a:hover,.langmenu a[aria-current="true"]{background:var(--accent-soft);color:var(--ink)}
.langmenu a span:last-child{color:var(--ink-3)}
.hero{display:grid;gap:16px;padding:14px 0 26px;grid-template-columns:minmax(0,1fr)}
@media (min-width:900px){.hero{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:end;gap:30px}}
.hero h1{font-size:clamp(30px,6.2vw,58px);font-weight:700}
.hero .lede{color:var(--ink-2);font-size:clamp(15px,1.5vw,18px);max-width:62ch;margin-top:10px}
.hero .heroart{align-self:end;justify-self:stretch}
.tabs{display:flex;gap:3px;overflow-x:auto;scrollbar-width:none;padding-top:4px;flex-wrap:wrap}
@media (min-width:700px){.tabs{flex-wrap:nowrap}}
.tabs::-webkit-scrollbar{display:none}
.tab{font-family:var(--display);font-size:16px;font-weight:600;letter-spacing:.02em;padding:9px 16px;border:1px solid var(--line);border-bottom:none;background:var(--surface-2);color:var(--ink-2);cursor:pointer;border-radius:3px 3px 0 0;white-space:nowrap;transform:translateY(1px)}
.tab{text-decoration:none;display:inline-block}
/* «О проекте» - не раздел учебника, а подпись автора: тише остальных вкладок,
   но на виду, потому что доверие начинается с вопроса «кто это сделал». */
.tab.alt{font-weight:500;color:var(--ink-3);background:transparent}
.signature{margin-top:26px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:2px}
/* Триколор под именем: тонкая подпись о том, откуда автор. Ширина строго по
   тексту имени, поэтому inline-block, а не рамка на всю строку. */
.signature .sname{font-family:var(--display);font-size:18px;font-weight:700;color:var(--ink);display:inline-block;align-self:flex-start;padding-bottom:6px;background-image:linear-gradient(90deg,#0055a4 0 33.34%,var(--flag-mid) 33.34% 66.67%,#ef4135 66.67% 100%);background-size:100% 2px;background-position:0 100%;background-repeat:no-repeat}
.signature .srole{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.signature a{margin-top:4px}
.tab.alt:hover{color:var(--ink-2);background:var(--surface-2)}
.tab[aria-current="page"]{background:var(--ground);color:var(--ink);box-shadow:inset 0 2px 0 var(--accent)}

/* ---------- вводный текст страницы ---------- */
.intro{display:flex;flex-direction:column;gap:10px;max-width:none;margin-bottom:24px}
.intro p{font-size:17px}
.intro a{text-decoration:none;border-bottom:1px solid var(--line-2)}
.intro a:hover{border-color:var(--accent)}
.sectorbox{display:flex;justify-content:center}
.lcard .nm{font-family:var(--display);font-size:19px;font-weight:700;line-height:1.14}

/* ---------- разделы ---------- */
main.wrap{padding:26px var(--pad) 120px}
.view{display:none}
.view.on{display:block}
.layout{display:grid;gap:26px;grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.layout{grid-template-columns:230px minmax(0,1fr);gap:44px}}
.rail{font-family:var(--mono);font-size:12px}
.rail>summary{cursor:pointer;font-family:var(--display);font-size:16px;font-weight:600;padding:10px 12px;border:1px solid var(--line);background:var(--surface);list-style:none}
.rail>summary::-webkit-details-marker{display:none}
.rail>summary::after{content:" ▾";color:var(--accent)}
.railinner{padding:10px 2px}
.rail .part{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:10px;margin:14px 0 6px}
.rail .part:first-child{margin-top:0}
.rail a{display:flex;gap:8px;color:var(--ink-2);text-decoration:none;padding:2px 0;line-height:1.32}
.rail a:hover{color:var(--accent)}
.rail a .n{color:var(--ink-3);min-width:20px;text-align:right;font-variant-numeric:tabular-nums}
@media (min-width:1100px){
  .rail{position:sticky;top:14px;align-self:start;max-height:calc(100vh - 30px);overflow-y:auto}
  .rail>summary{display:none}
  .rail[open] .railinner,.rail .railinner{padding:0}
}
.col{max-width:none;display:flex;flex-direction:column;gap:32px}
.colwide{max-width:none;display:flex;flex-direction:column;gap:26px}

.parthead{display:flex;flex-direction:column;gap:6px;border-top:2px solid var(--accent);padding-top:14px}
.parthead .eyebrow{color:var(--accent)}
.parthead h2{font-size:clamp(22px,3vw,30px);font-weight:700}
.parthead p{color:var(--ink-2);font-size:16px;max-width:70ch}

.rule{display:flex;flex-direction:column;gap:12px;scroll-margin-top:14px}
.rule .head{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
.rule .plain,.rule .bullets li,.example p,.quote{max-width:92ch}
.rule .num{font-family:var(--mono);font-size:12px;color:var(--accent);flex:none}
.rule h3{font-size:clamp(19px,2.4vw,24px);font-weight:700}
.plain b{font-weight:600}
.bullets{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px}
.bullets li{display:flex;gap:9px;font-size:16.5px}
.bullets li::before{content:"›";color:var(--accent);font-family:var(--mono);flex:none}
.example{border-left:3px solid var(--amber);background:var(--surface);padding:12px 16px;display:flex;flex-direction:column;gap:6px}
.example .label{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber)}
.quote{font-size:15px;color:var(--ink-2);border-left:2px solid var(--line-2);padding-left:14px}
.quote .label{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:4px}
.port{color:var(--port);font-weight:600}
.stbd{color:var(--stbd);font-weight:600}

/* ---------- огни ---------- */
.groupline{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line);padding-bottom:6px;margin-top:24px}
/* Карточки стыкуются вплотную и делят одну линию: с зазором между ними
   просвечивал почти чёрный фон страницы и читался как полосы. */
.lightsgrid{display:grid;gap:0;grid-template-columns:minmax(0,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
@media (min-width:760px){.lightsgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1360px){.lightsgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.lcard{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column}
.lcard .lhead{padding:13px 15px 9px;display:flex;flex-direction:column;gap:3px;border-bottom:1px solid var(--line)}
.lcard .r{font-family:var(--mono);font-size:10.5px;color:var(--accent);letter-spacing:.06em}
.lcard .nm{font-family:var(--display);font-size:19px;font-weight:700;line-height:1.14}
.views{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--sea-1)}
.viewcell{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;padding:10px 4px 8px;border-right:1px solid var(--line)}
.viewcell:last-child{border-right:none}
.viewcell .vlabel{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);text-align:center;min-height:3.4em;display:flex;flex-direction:column;justify-content:flex-start}
.viewcell .vnone{color:var(--ink-2);text-transform:none;letter-spacing:0;font-size:10px}
.lbody{padding:12px 15px 14px;display:flex;flex-direction:column;gap:9px}
.lbody .d{font-size:15.5px}
.lbody .dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;margin:0;font-size:14px}
.lbody .dl dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding-top:3px}
.lbody .dl dd{margin:0;color:var(--ink-2)}
.dayrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:9px}
.dayrow .shapes{display:flex;gap:6px;align-items:flex-end}
.dayrow .txt{font-size:13.5px;color:var(--ink-2)}
.legend{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);border:1px solid var(--line);background:var(--surface);padding:14px 16px}
@media (min-width:840px){.legend{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:20px;align-items:center}}
.legend ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:15px}
.legend li{display:flex;gap:9px;align-items:baseline}
.legend .sw{width:13px;height:13px;border-radius:50%;flex:none;margin-top:5px;border:1px solid var(--line-2)}
.legend .sw.dashed{border:1px dashed var(--ink-2);background:transparent}
.blink .flashing{animation:bl .5s steps(1,end) infinite}
@keyframes bl{0%,49%{opacity:1}50%,100%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.blink .flashing{animation:none}}

/* ---------- гудки ---------- */
.sig{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;padding:12px 0;border-bottom:1px solid var(--line)}
@media (min-width:700px){.sig{grid-template-columns:180px minmax(0,1fr);gap:16px;align-items:baseline}}
.sig .pat{font-family:var(--mono);font-size:16px;color:var(--accent);letter-spacing:.14em}
.sig .m{font-size:16px;max-width:88ch}
.sig .m em{color:var(--ink-2);font-style:normal;font-size:14.5px;display:block;margin-top:2px}

/* ---------- звук гудков ---------- */
.audiobar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:2px 0 12px}
.audiobar .albl{flex:1 0 100%;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 2px}
.audiobar #snd-stop{margin-left:10px}
@media (max-width:620px){.audiobar #snd-stop{margin-left:0}}
.playwrap{margin-top:7px}
.btn.play{font-size:13px;padding:6px 11px;font-family:var(--mono);letter-spacing:.02em}
.btn.play[aria-pressed="true"]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
#snd-stop[hidden]{display:none}

/* ---------- карточки ---------- */
.drill{max-width:820px;display:flex;flex-direction:column;gap:20px;padding-bottom:28px}
.statline{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:12px}
.stat{display:flex;flex-direction:column}
.stat .v{font-family:var(--display);font-size:26px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.stat .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.deckpick{display:flex;flex-wrap:wrap;gap:6px}
.card{border:1px solid var(--line-2);background:var(--surface);padding:20px;display:flex;flex-direction:column;gap:14px;min-height:250px}
.card .cmeta{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center}
.card .tagb{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid var(--line-2);padding:3px 7px}
.card .hint{font-family:var(--mono);font-size:11.5px;color:var(--ink-3)}
.card .q{font-family:var(--display);font-size:clamp(19px,2.6vw,23px);font-weight:600;line-height:1.25}
.card .qart{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;background:var(--sea-1);border:1px solid var(--line);padding:10px}
.card .a{border-top:1px dashed var(--line-2);padding-top:14px;display:flex;flex-direction:column;gap:9px}
.card .a .why{font-size:14.5px;color:var(--ink-2)}
.controls{display:flex;flex-wrap:wrap;gap:8px}
.btn{font-family:var(--display);font-size:15px;font-weight:600;padding:10px 16px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:2px}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);color:var(--ground);border-color:var(--accent)}
.btn.again{color:var(--port);border-color:var(--port)}
.btn.hard{color:var(--amber);border-color:var(--amber)}
.btn.good{color:var(--stbd);border-color:var(--stbd)}
.btn .sub{display:block;font-family:var(--mono);font-size:10px;font-weight:400;color:var(--ink-3)}
.btn.ghost{border-color:transparent;color:var(--ink-3);font-size:13px;padding:6px 8px}
.btn.ghost:hover{color:var(--port)}
.shelves{display:flex;flex-direction:column;gap:6px}
.shelf{display:grid;grid-template-columns:92px minmax(0,1fr) 30px;gap:10px;align-items:center}
.shelf .nm{font-family:var(--mono);font-size:11px;color:var(--ink-2)}
.shelf .bar{height:8px;background:var(--surface-2)}
.shelf .bar i{display:block;height:100%;background:var(--accent)}
.shelf .ct{font-family:var(--mono);font-size:12px;color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums}
.done{border:1px solid var(--line);background:var(--surface);padding:20px;display:flex;flex-direction:column;gap:8px}

/* ---------- схемы внутри правил ---------- */
.rulestrip{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.rslabel{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.rrow{display:flex;gap:14px;overflow-x:auto;padding-bottom:4px}
.rcell{margin:0;flex:0 0 auto;width:252px;border:1px solid var(--line);background:var(--surface)}
.rviews{display:flex;align-items:flex-end;gap:4px;background:var(--sea-1);padding:6px 6px}
.rviews svg{max-width:86px!important}
.rday{border-left:1px solid var(--line-2);padding-left:8px;margin-left:2px;display:flex;align-items:center;flex:0 0 auto}
.rday svg{max-width:none;flex:0 0 auto}
.rcell figcaption{font-family:var(--display);font-size:14.5px;font-weight:600;line-height:1.2;padding:8px 10px 10px;color:var(--ink)}


.sndstrip{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px}
.sndrow{display:flex;flex-wrap:wrap;gap:8px}
.sndrow .btn.play{display:inline-flex;align-items:center;gap:8px}
.sndrow .sp{font-family:var(--mono);color:var(--accent);letter-spacing:.14em}

/* ---------- подвал и модалка ---------- */
footer{border-top:1px solid var(--line);background:var(--ground-2);padding:26px 0 40px;color:var(--ink-2);font-size:14.5px}
footer .fgrid{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}
@media (min-width:800px){footer .fgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:26px}}
footer .fh{font-size:14px;font-family:var(--mono);font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
footer a{color:var(--accent)}
.modal{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(3,8,12,.72)}
.modal.on{display:flex}
.modal .box{background:var(--surface);border:1px solid var(--line-2);max-width:520px;width:100%;padding:20px;display:flex;flex-direction:column;gap:12px;max-height:86vh;overflow:auto}
.modal h3{font-size:21px}
.modal ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:15.5px}

/* ---------- полный список карточек (статикой, для чтения и поиска) ---------- */
.cardlist{margin-top:34px}
.deckhead{font-family:var(--display);font-size:21px;font-weight:700;margin:24px 0 12px;display:flex;align-items:baseline;gap:9px}
.deckhead .cnt{font-family:var(--mono);font-size:12px;color:var(--ink-3);font-weight:400}
.qa{border:1px solid var(--line);background:var(--surface);padding:15px 17px 14px;margin:0 0 12px}
.qa .q{font-family:var(--display);font-size:17.5px;font-weight:600;line-height:1.3;margin:0 0 10px}
.qa .cart{margin:0 0 12px;max-width:520px}
.qa .cart .views{border:1px solid var(--line)}
.qa .cart .qart{background:var(--sea-1);border:1px solid var(--line);display:flex;justify-content:center;padding:8px}
.qa .cart .viewcell{padding:8px 4px 6px}
.qa .cart .vlabel{min-height:2.6em}
.qa .csnd{margin:0 0 12px}
.qa .a{border-top:1px dashed var(--line-2);padding-top:11px;color:var(--ink-2);font-size:15.5px}
.qa .a p{margin:0 0 6px}
.qa .a p:last-child{margin:0}
.qa .a .why{color:var(--ink-3);font-size:14px}
@media (min-width:900px){.cardlist .qa{max-width:92ch}}

/* ---------- частые вопросы ---------- */
.faq{margin-top:36px}
.faqitem{border-bottom:1px solid var(--line)}
.faqitem summary{cursor:pointer;list-style:none;padding:12px 0;display:flex;gap:10px;align-items:baseline}
.faqitem summary::-webkit-details-marker{display:none}
.faqitem summary::before{content:"+";font-family:var(--mono);color:var(--accent);font-size:15px;flex:0 0 auto}
.faqitem[open] summary::before{content:"–"}
.faqitem summary h3{display:inline;font-family:var(--display);font-size:17.5px;font-weight:600;line-height:1.3}
.faqa{color:var(--ink-2);font-size:15.5px;padding:0 0 14px 20px;max-width:92ch}

/* ---------- страница одного правила ---------- */
.crumbs{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px}
.crumbs a{color:var(--accent);text-decoration:none}
.crumbs span{margin:0 4px}
.rpart{color:var(--ink-2);font-size:15px;margin:0 0 16px}
.rpart .eyebrow{display:inline;margin-right:6px}
.rulesolo{border:none;padding:0}
.rulesolo .plain{font-size:18px}
.rlights,.rsnd,.siblings{margin-top:30px}
.siblist{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.siblist a{display:flex;gap:10px;padding:7px 8px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
.siblist a:hover{background:var(--surface)}
.siblist .n{font-family:var(--mono);font-size:12px;color:var(--accent);flex:0 0 auto;min-width:8.5em}
.rulenav{display:flex;flex-wrap:wrap;gap:10px;margin:32px 0 0}
.rulenav .btn{text-decoration:none}
.modal .mtitle{font-family:var(--display);font-size:21px;font-weight:700;margin:0 0 10px}

/* ---------- глоссарий огней ---------- */
.terms{margin-top:36px}
.termgrid{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:820px){.termgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.term{border-left:2px solid var(--line-2);padding:2px 0 2px 14px}
.term h3{font-family:var(--display);font-size:18px;font-weight:700;margin:0 0 2px}
.term .syn{display:block;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);margin:0 0 6px}
.term p{color:var(--ink-2);font-size:15.5px;margin:0}
.quote .qnote{display:block;margin-top:6px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-3)}
.quote .qorig{margin-top:8px}
.quote .qorig summary{cursor:pointer;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.quote .qorig div{margin-top:6px;color:var(--ink-3);font-size:14px}
.rulemore{margin:12px 0 0}
.rulemore a{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--accent);text-decoration:none;border-bottom:1px dotted var(--line-2)}
.ruleindex{margin-top:36px}

/* ---------- согласие на аналитику ---------- */
.cookiebar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;flex-wrap:wrap;gap:12px;
  align-items:center;justify-content:space-between;padding:14px var(--pad);
  background:var(--surface);border-top:1px solid var(--line-2);box-shadow:0 -8px 24px rgba(0,0,0,.25)}
.cookiebar p{margin:0;font-size:14.5px;color:var(--ink-2);max-width:78ch}
.cookiebar a{color:var(--accent)}
.cookiebtns{display:flex;gap:8px;flex:0 0 auto}
@media (max-width:620px){.cookiebar{flex-direction:column;align-items:flex-start}}
/* На iPhone внизу лежит полоса жестов: без этого отступа кнопки уезжают под неё. */
.cookiebar{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}
/* Полоса «поставить на экран». Внешне та же, что и согласие, но появляется
   позже и никогда одновременно с ним, поэтому лежит слоем ниже. */
.installbar{z-index:59}

/* ---------- страницы условий и приватности ---------- */
.legal{max-width:80ch}
.legalsec{margin:0 0 22px}
.legalsec h2{font-family:var(--display);font-size:20px;font-weight:700;margin:0 0 6px}
.legalsec p{color:var(--ink-2);font-size:16px;margin:0}
.legalmail{margin-top:28px;font-family:var(--mono);font-size:14px}
footer .flinks{display:flex;flex-wrap:wrap;gap:14px;margin-top:6px;padding-top:14px;border-top:1px solid var(--line);grid-column:1/-1}
footer .flinks a{color:var(--accent);text-decoration:none;font-size:14px}

/* ползунок пеленга под круговой схемой секторов */
.secctl{margin:10px 0 0;width:100%;max-width:360px}
.secrow{display:flex;align-items:center;gap:10px}
.secbrg{font:600 20px/1 var(--mono,ui-monospace,Menlo,monospace);color:var(--ink);min-width:64px}
.secrng{flex:1;min-width:0;accent-color:var(--stbd);height:24px}
.sechint{margin:6px 0 0;font-size:12.5px;color:var(--ink-3,var(--ink-2))}
.secvist{margin:9px 0 4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.secvis{margin:0;padding:0;list-style:none;display:grid;gap:5px}
.secvis li{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink)}
.secvis .sdot{width:10px;height:10px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}
.secvis .snone{color:var(--ink-2);font-style:italic}

/* режимы тренажёра и варианты ответа */
.modepick{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 8px}
.opts{display:grid;gap:8px;margin:12px 0 0}
.opt{appearance:none;text-align:left;font:inherit;font-size:14.5px;line-height:1.4;color:var(--ink);
  background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:11px 13px;cursor:pointer}
.opt:hover:not(:disabled){border-color:var(--line-2)}
.opt:disabled{cursor:default;opacity:.72}
.opt.right{border-color:var(--stbd);background:color-mix(in srgb,var(--stbd) 14%,var(--surface-2));opacity:1}
.opt.wrong{border-color:var(--port);background:color-mix(in srgb,var(--port) 14%,var(--surface-2));opacity:1}
.verdict{margin:12px 0 0;font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:13px}
.verdict.ok{color:var(--stbd)}
.verdict.no{color:var(--port)}
.badlist{margin:6px 0 0;padding-left:18px;display:grid;gap:8px;font-size:14px;color:var(--ink-2)}
.badlist b{color:var(--ink);font-weight:600}

/* 3D-блок на странице огней: живёт в контентной колонке, не на весь экран */
.l3d{margin:22px 0 0;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.l3dlede{margin:0 0 10px;color:var(--ink-2);font-size:14.5px;max-width:60ch}
.l3dstage{position:relative;width:100%;aspect-ratio:4/3;min-height:320px;max-height:64svh;
  border-radius:12px;overflow:hidden;background:#04070d}
.l3dcv{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}
.l3dcv:focus-visible{outline:2px solid var(--stbd);outline-offset:2px}
.l3dbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0 0}
.l3dpick{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2);min-width:0}
.l3dpick select{max-width:min(260px,58vw);font:inherit;font-size:13px;color:var(--ink);
  background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:6px 10px}
.l3d .secrow{margin-top:10px}
@media (prefers-reduced-motion:reduce){.l3dcv{cursor:default}}

/* ситуации расхождения: факты встречи таблицей, без склеенных фраз */
.sitfacts{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;margin:4px 0 14px;font-size:14px}
.sitfacts dt{color:var(--ink-2);white-space:nowrap}
.sitfacts dd{margin:0;color:var(--ink)}
.sitrule{margin:8px 0 0;font-size:14px}
.sitrule a{color:var(--stbd)}
.badlist li .badart{max-width:150px;margin:0 0 6px}
.badlist li .badart svg{max-width:70px}
/* подсказка «крути пальцем»: гаснет после первого действия */
.l3dhint{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;
  white-space:nowrap;max-width:calc(100% - 16px);padding:6px 12px;border-radius:999px;
  border:1px solid rgba(160,195,230,.26);background:rgba(4,7,13,.7);color:#cfe0f0;font-size:12.5px;
  pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  transition:opacity .4s ease;animation:l3dpulse 2.6s ease-in-out infinite}
@media (max-width:420px){.l3dhint{font-size:11.5px;padding:5px 10px;gap:5px}}
.l3dhint.off{opacity:0}
@keyframes l3dpulse{0%,100%{opacity:.95}50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.l3dhint{animation:none}}

/* ============ ШАПКА И ВКЛАДКИ НА ТЕЛЕФОНЕ ============
   На узком экране панель инструментов ломалась на два ряда, а пять вкладок на
   три. Решение: панель сворачивается в иконки, вкладки едут одной лентой. */
.chip.ic svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round}
.chip .tcode{display:none;font-weight:600;letter-spacing:.04em}
.langbox>summary.ic::after{content:"▾";opacity:.6;font-size:10px}

@media (max-width:640px){
  .topbar{align-items:flex-start}
  .toolbar{flex-wrap:nowrap;gap:5px;margin-left:auto}
  /* подписи прячем, остаются иконки: título и aria-label остаются на месте */
  .chip.ic .tlabel{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .chip.ic{padding:8px 9px;min-height:34px;min-width:34px;justify-content:center}
  .chip .tcode{display:inline}
  .langbox>summary.ic{gap:4px}
}

/* Вкладки: одна прокручиваемая лента вместо переноса на два ряда.
   Тень по краям подсказывает, что ленту можно тянуть. */
.tabs{flex-wrap:nowrap;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;scroll-padding-left:12px}
.tab{scroll-snap-align:start}
@media (max-width:699px){
  .tabs{position:relative;
    -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%);
    mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 calc(100% - 18px),transparent 100%)}
  .tab{font-size:15px;padding:9px 13px}
}

/* ============ УСТРОЙСТВО ЯХТЫ ============ */
.yartwrap{display:grid;gap:14px;grid-template-columns:1fr;margin:0 0 16px}
@media (min-width:820px){.yartwrap{grid-template-columns:1.55fr 1fr;align-items:start}}
.yart{margin:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:10px 10px 6px;min-width:0}
.yart figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 6px}
.yartsvg{display:block;width:100%;height:auto;border-radius:10px;overflow:visible}
/* На узком экране разрез сбоку сжимается так, что номера не прочесть.
   Даём ему горизонтальную прокрутку: это осознанная полоса, а не сломанная вёрстка. */
.yscroll{min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
@media (max-width:700px){
  .yscroll .yartsvg{min-width:640px}
  .yart-side figcaption::after{content:" ->";opacity:.6}
}
.ypin{cursor:pointer}
.ypin .ydot{fill:var(--surface);stroke:var(--ink-3);stroke-width:1.6}
.ypin .ylead{stroke:var(--ink-3);stroke-width:1;opacity:.65}
.ypin.on .ylead{stroke:var(--stbd);opacity:1}
.ypin .ynum{font-family:var(--mono);font-size:10px;fill:var(--ink);font-weight:600}
.ypin:hover .ydot,.ypin:focus-visible .ydot{stroke:var(--accent);fill:var(--accent-soft)}
.ypin:focus-visible{outline:none}
.ypin:focus-visible .yhit{stroke:var(--accent);stroke-width:2;fill:none}
.ypin.on .ydot{fill:var(--stbd);stroke:var(--stbd)}
.ypin.on .ynum{fill:#04070d;font-weight:700}
.ysearch{display:flex;align-items:center;gap:10px;margin:14px 0 6px;flex-wrap:wrap}
.ysearch label{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}
.ysearch input{flex:1;min-width:180px;font:inherit;font-size:15px;color:var(--ink);background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:10px;padding:9px 12px}
.ygrid{display:grid;gap:10px;grid-template-columns:1fr}
@media (min-width:640px){.ygrid{grid-template-columns:1fr 1fr}}
@media (min-width:1040px){.ygrid{grid-template-columns:1fr 1fr 1fr}}
.ypart{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:11px 13px;scroll-margin-top:80px}
.ypart h3{margin:0 0 5px;font-size:16px;display:flex;align-items:center;gap:8px}
.ypart p{margin:0;color:var(--ink-2);font-size:14.5px;line-height:1.45}
.ypart.on{border-color:var(--stbd);background:color-mix(in srgb,var(--stbd) 9%,var(--surface))}
.ynummark{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;
  border-radius:50%;border:1px solid var(--line-2);font-family:var(--mono);font-size:11px;color:var(--ink-2);flex:none}
.ypart.on .ynummark{border-color:var(--stbd);color:var(--stbd)}
.yrule{margin:6px 0 0;font-size:13px}
.yrule a{color:var(--stbd)}
@media print{
  .masthead,.tabs,.ysearch,.cookiebar,.foot,.toolbar{display:none!important}
  .yartwrap{grid-template-columns:1fr 1fr;gap:8px}
  .ypart{break-inside:avoid;border-color:#999}
  .ygrid{grid-template-columns:1fr 1fr}
}

/* 3D-яхта на странице устройства */
.y3d{margin:0 0 18px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.y3d .l3dstage{aspect-ratio:16/11;min-height:300px;max-height:70svh}
.y3name{font-family:var(--mono);font-size:12.5px;color:var(--stbd);margin-left:auto;align-self:center}
@media (max-width:520px){.y3name{margin-left:0;width:100%}}
