/* Povolte šroub — stránka s ukázkou. Barvy a písma ze sdíleného /assets/styles.css. */
.back{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.lab h1{font-size:clamp(40px,5vw,66px)}
.lab-intro{max-width:640px;color:var(--muted);font-size:17px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.controls{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:20px;margin-top:40px}
.ctl-label{font:10px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:#9c9c94;margin-bottom:8px}
.seg{display:flex;flex-wrap:wrap;border:1px solid #77776f}
.seg button{background:none;color:var(--paper);border:0;border-right:1px solid #77776f;font:600 12px var(--mono);letter-spacing:.03em;padding:12px 14px}
.seg button:last-child{border-right:0}
.seg button[aria-pressed=true]{background:var(--paper);color:var(--ink)}
.seg.scen button[aria-pressed=true]{background:var(--yellow)}

.grid{display:grid;grid-template-columns:1.55fr 1fr;gap:24px;margin-top:24px}
.panel{border:1px solid #3b3b38;background:#1d1d1c}
.panel-h{display:flex;justify-content:space-between;align-items:center;gap:10px;font:10px var(--mono);letter-spacing:1.5px;text-transform:uppercase;color:#9c9c94;padding:12px 16px;border-bottom:1px solid #3b3b38}
.panel-h button{background:none;border:1px solid #4d4d48;color:#cfcfc8;font:10px var(--mono);letter-spacing:1px;text-transform:uppercase;padding:5px 8px}
.panel-h button[aria-pressed=true]{border-color:var(--yellow);color:var(--yellow)}

/* Okno aplikace */
.app-panel{display:flex;flex-direction:column}
.app-panel .app{flex:1}
.app{background:var(--paper);color:var(--ink);position:relative;min-height:430px;display:flex;flex-direction:column}
.app :focus-visible{outline-color:#697500}
.app-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}
.app-title{font-weight:900;font-size:17px;letter-spacing:-.01em;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}
.app-title small{font:11px var(--mono);font-weight:400;color:#69685f;letter-spacing:0}
.app-meta{display:flex;align-items:center;gap:12px;font:12px var(--mono);color:#4b4a44;white-space:nowrap}
.who{display:flex}
.who span{width:26px;height:26px;border-radius:50%;background:var(--ink);color:var(--paper);font:700 10px var(--mono);display:grid;place-items:center;border:2px solid var(--paper);margin-left:-6px}
.banners{padding:0 18px}
.banner{margin:12px 0 0;padding:10px 12px;font-size:13px;line-height:1.45;border-left:4px solid var(--ink);background:#e9e4d8}
.banner.bad{border-color:var(--error);color:#7a1a12;background:#f3e1dc}
.rows{list-style:none;margin:8px 0 0;padding:0 18px 14px}
.row{display:grid;grid-template-columns:62px 1fr auto 132px;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}
.row .id{font:12px var(--mono);color:#69685f}
.row .cust b{font-weight:700}
.row .cust small{display:block;color:#69685f;font-size:12px}
.row .amt{font:13px var(--mono);text-align:right}
.editing{display:inline-flex;gap:4px;margin-left:8px;vertical-align:middle}
.editing span{width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--paper);font:700 9px var(--mono);display:inline-grid;place-items:center}
.chip{display:block;font:600 10.5px var(--mono);letter-spacing:.02em;padding:5px 7px;text-align:center;border:1px solid #a9a69e;color:#4b4a44}
.chip.done{border-color:var(--ink);color:var(--ink)}
.chip.wait,.chip.held{background:#e2ddd0;border-color:#e2ddd0}
.chip.held{border:1px dashed #8c8a82}
.chip.you{background:var(--yellow);border-color:var(--yellow);color:var(--ink)}
.chip.bad{border-color:var(--error);color:var(--error)}
.chip-detail{display:block;font:10px var(--mono);color:#69685f;text-align:center;margin-top:3px}
.fix{display:block;margin:6px 0 0;background:var(--ink);color:var(--paper);border:0;font:600 10.5px var(--mono);padding:6px 8px;width:100%}
.app.down .rows,.app.down .banners{opacity:.3}
.overlay{position:absolute;inset:58px 0 0;display:grid;place-items:center;padding:24px;text-align:center;background:#f4f0e7cc}
.overlay[hidden]{display:none}
.overlay .box{background:var(--ink);color:var(--paper);padding:26px;max-width:440px}
.overlay .box:focus-visible{outline:3px solid var(--yellow)}
.overlay h2{font-size:24px;margin-bottom:10px}
.overlay p{font-size:14px;color:var(--muted);margin-bottom:16px}
.overlay .btn{font-size:13px;padding:13px 16px;margin:4px}
.overlay .ghost{background:none;color:var(--paper);border:1px solid #5d5d58}
.overlay :focus-visible{outline-color:var(--yellow)}

/* Schéma */
.board svg{display:block;width:100%;height:auto}
.board-hint{font-size:12px;color:#9c9c94;padding:0 16px 14px;margin:0}
.node rect{fill:none;stroke:#8c8c86;stroke-width:1.5}
.node .title{fill:var(--paper);font:800 14px Archivo,sans-serif}
.node .sub{fill:#9c9c94;font:9.5px var(--mono)}
.node.app-node rect{fill:var(--paper);stroke:var(--paper)}
.node.app-node .title{fill:var(--ink)}
.node.app-node .sub{fill:#5b5a54}
.node.app-node.off rect{fill:#3a3a37;stroke:#3a3a37}
.node.app-node.off .title{fill:#cfcfc8}
.node.app-node.off .sub{fill:#cfcfc8}
.node.problem rect{stroke:var(--yellow);stroke-width:2.5}
.marker circle{fill:var(--yellow)}
.marker text{fill:var(--ink);font:900 12px Archivo,sans-serif}
.status{fill:var(--yellow);font:700 10.5px var(--mono)}
.link{fill:none;stroke:#6d6d68;stroke-width:2}
.link.problem{stroke:var(--yellow);stroke-width:2.5}
.link.down{stroke-dasharray:4 8}
.link.slow{stroke-dasharray:1 6;stroke-linecap:round;stroke-width:3.5}
.guard rect{fill:none;stroke:#5d5d58}
.guard text{fill:#cfcfc8;font:9.5px var(--mono);letter-spacing:.04em}
.guard.off text{fill:#8a8a82}
.guard.off line{stroke:#ff8a7a;stroke-width:1.5}
.packet{fill:var(--yellow)}
.packet.bad{fill:#1d1d1c;stroke:var(--yellow);stroke-width:2}
.bolt{cursor:pointer}
.bolt.locked{cursor:not-allowed}
.bolt .head{fill:var(--paper);stroke:#1d1d1c;stroke-width:2;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.bolt .hole{fill:#1d1d1c}
.bolt.loose .head{fill:var(--yellow)}
.bolt:focus{outline:none}
.bolt .ring{fill:none;stroke:transparent}
.bolt:focus-visible .ring{stroke:var(--yellow);stroke-width:2}
/* Bez ošetření: problémy chybovou barvou, systém je neudrží */
svg.naive .node.problem rect,svg.naive .link.problem{stroke:#ff8a7a}
svg.naive .marker circle{fill:#ff8a7a}
svg.naive .status{fill:#ff8a7a}
.board-hint.note{color:var(--yellow)}

/* Co se děje */
.feed{list-style:none;margin:0;padding:6px 16px 10px;min-height:250px}
.feed li{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:baseline;padding:9px 0;border-bottom:1px solid #2e2e2c;font-size:14px;line-height:1.45;color:#e2e0d8}
.feed li:last-child{border:0}
.feed time{font:11px var(--mono);color:#8a8a82}
.feed .tag{font:10px var(--mono);letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;color:#9c9c94}
.feed .tag.you{color:var(--ink);background:var(--yellow);padding:2px 5px}
.feed .tag.bad{color:#ff8a7a}
.feed.tech li{grid-template-columns:44px 1fr;font:12px/1.6 var(--mono);color:#cfcfc8}

/* Jak den dopadl */
.stats{display:grid;grid-template-columns:1fr 1fr}
.stat{padding:14px 16px;border-right:1px solid #3b3b38;border-bottom:1px solid #3b3b38}
.stat:nth-child(2n){border-right:0}
.stat:nth-last-child(-n+2){border-bottom:0}
.stat b{display:block;font-size:26px;font-weight:900;letter-spacing:-.02em;line-height:1.1}
.stat span{font:10px var(--mono);letter-spacing:1px;text-transform:uppercase;color:#9c9c94}
.stat.bad b{color:#ff8a7a}
.stat.zero b,.stat.you b{color:var(--yellow)}

@media(max-width:900px){.grid{grid-template-columns:1fr}.board{order:5}}
@media(max-width:650px){
  .row{grid-template-columns:1fr auto;row-gap:6px}
  .row .id{grid-column:1}.row .amt{grid-column:2;grid-row:1}
  .row .cust,.row .st{grid-column:1/-1}
  .seg button{padding:10px;font-size:11px}
  .lab-intro{font-size:15px}
  .feed li{grid-template-columns:40px 1fr}.feed .tag{grid-column:2}
  .overlay{inset:0}
}

/* Režim bez ošetření je vidět pořád, i když se zrovna nic nekazí */
.mode-flag{font:700 10px var(--mono);letter-spacing:1px;text-transform:uppercase;color:var(--error);border:1.5px solid var(--error);padding:3px 6px}
.mode-flag[hidden]{display:none}
.lab.is-naive .app-panel,.lab.is-naive .board{border:2px dashed #ff8a7a}
.lab.is-naive .app-top{background:repeating-linear-gradient(-45deg,#f3e1dc 0 10px,var(--paper) 10px 20px)}

/* Vysvětlení pod ukázkou */
.after{border-top:1px solid #3b3b38}
.after-text{max-width:640px}
.after-text p{color:var(--muted);margin:0 0 16px}

/* Pevné rozměry okna aplikace: počet upozornění ani řádků nemění jeho výšku */
.banners{min-height:52px}
.banner.calm{border-color:#a9a69e;color:#69685f;background:none}
.row{height:62px;padding:0}
.rows{min-height:448px}
.chip-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:650px){
  .banners{min-height:90px}
  .row{height:118px;align-content:center}
  .rows{min-height:840px}
  .row .st{display:flex;align-items:center;gap:10px}
  .row .st .chip{flex:none}
  .row .st .chip-detail{margin:0;text-align:left}
  .row .st .fix{width:auto;margin:0;padding:6px 12px}
}
svg.invite .bolt .ring{stroke:var(--yellow);stroke-width:2;animation:bolt-invite 1.6s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes bolt-invite{0%{opacity:.9;transform:scale(.7)}100%{opacity:0;transform:scale(1.3)}}
.row .cust small strong{color:var(--ink);font-weight:700}
.lab-note{max-width:640px;color:#9c9c94;font-size:14px;margin-top:-4px}
/* Pevná výška přehledu: nejnovější zprávy jsou nahoře, nejstarší se dole oříznou */
.feed{height:340px;min-height:0;overflow:hidden}
@media(max-width:650px){.feed{height:460px}}
