:root{--ink:#0b3c49;--petri:#1fa37a;--petri-d:#157a5b;--signal:#f2c230;--bg:#f1f6f6;--card:#fff;--line:#d5e2e3;--muted:#5b7479;--bad:#b3261e;
 --font:"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
*{box-sizing:border-box}
body{margin:0;font:16px/1.55 var(--font);color:var(--ink);background:var(--bg)}
a{color:var(--petri-d)}
h1{font-size:1.7rem;line-height:1.2;margin:.2em 0 .7em}
h2{font-size:1.05rem;margin:0 0 .7em}
.wrap{max-width:1180px;margin:0 auto;padding:20px}
.btn{display:inline-block;background:var(--petri);color:#fff;border:0;border-radius:8px;padding:.6em 1.1em;font:600 .95rem var(--font);cursor:pointer;text-decoration:none}
.btn:hover{background:var(--petri-d)}.btn:disabled{opacity:.5}
.btn.danger{background:var(--bad)}.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
:focus-visible{outline:3px solid var(--signal);outline-offset:2px}
.hint{color:var(--muted);font-size:.88rem;margin:.4em 0}
.empty{color:var(--muted);padding:1em 0}
.ok{background:#dff3ea;border-left:4px solid var(--petri);padding:.6em 1em;border-radius:6px}
.err{background:#fde8e6;border-left:4px solid var(--bad);padding:.6em 1em;border-radius:6px}
/* admin */
.bar{display:flex;gap:24px;align-items:center;background:var(--ink);color:#fff;padding:0 20px;flex-wrap:wrap}
.bar a{color:#cfe6e3;text-decoration:none;padding:16px 0}
.bar nav{display:flex;gap:22px;flex:1}.bar nav a.on{color:#fff;box-shadow:inset 0 -3px var(--signal)}
.brand{font-weight:700;color:#fff!important;display:flex;align-items:center;gap:10px}
.dot{width:14px;height:14px;border-radius:50%;background:var(--petri);box-shadow:0 0 0 4px rgba(31,163,122,.3)}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:0 0 18px}
label{display:block;font-weight:600;font-size:.9rem;margin:0 0 12px}
input:not([type=checkbox]):not([type=file]),select,textarea{display:block;width:100%;margin-top:4px;padding:.55em .7em;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}
input[type=file]{display:block;margin-top:6px}
.chk{display:flex;gap:8px;align-items:center}
.row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.row>label{flex:1;min-width:220px;margin:0}
.filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.filters select{width:auto;margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:18px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
.stat b{display:block;font-size:2rem;line-height:1.1}.stat span{color:var(--muted);font-size:.88rem}
.two{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}.three{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
@media(max-width:860px){.two,.three{grid-template-columns:1fr}}
.scroll{overflow-x:auto}
table.data{border-collapse:collapse;width:100%;font-size:.9rem}
table.data th{text-align:left;color:var(--muted);font-weight:600;border-bottom:2px solid var(--line);padding:8px 10px;white-space:nowrap}
table.data td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
table.bars{width:100%;font-size:.9rem;margin-bottom:14px}table.bars td{padding:3px 4px}
.b{width:55%}.b i,.funnel i{display:block;height:10px;background:var(--petri);border-radius:5px}.n{text-align:right;color:var(--muted)}
.funnel{display:grid;grid-template-columns:100px 1fr 90px;gap:10px;align-items:center;margin:10px 0;font-size:.9rem}
.funnel div{background:#e4eeee;border-radius:5px}.funnel em{font-style:normal;color:var(--muted);text-align:right}
.vrow{display:flex;gap:18px;flex-wrap:wrap}.vrow video{max-width:100%;border-radius:8px;background:#000;align-self:flex-start}.vrow .fields{flex:1;min-width:260px}
.qrcard{text-align:center}.qrcard .qr{display:flex;justify-content:center;padding:10px}.qrcard .row{justify-content:center}.qrcard h3{margin:.3em 0 0}
.qrcard .hint{word-break:break-all}
.login{display:grid;place-items:center;min-height:100vh}.loginbox{width:min(360px,92vw)}
.pager{display:flex;gap:16px}
/* public */
.hero{background:var(--ink);color:#fff;padding:64px 20px 56px;
 background-image:radial-gradient(circle at 88% 20%,rgba(31,163,122,.55) 0 70px,transparent 71px),radial-gradient(circle at 80% 60%,rgba(242,194,48,.35) 0 34px,transparent 35px),radial-gradient(circle at 94% 75%,rgba(31,163,122,.3) 0 46px,transparent 47px)}
.hero>*{max-width:760px;margin-left:max(20px,calc((100% - 1140px)/2))}
.hero h1{font-size:clamp(2rem,5vw,3.4rem);line-height:1.08;letter-spacing:-.02em}
.hero .when{color:var(--signal);font-weight:600;margin:0}.hero .lead{font-size:1.15rem;color:#cfe6e3}
.vcard{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;color:var(--ink);text-decoration:none}
.vcard:hover{border-color:var(--petri)}.vcard h2{font-size:1.1rem}.vcard p{color:var(--muted);margin:.3em 0}
.play{width:44px;height:44px;border-radius:50%;background:var(--petri);color:#fff;display:grid;place-items:center;margin-bottom:12px}
.foot{text-align:center;color:var(--muted);font-size:.85rem;padding:30px 20px}
.mini{display:flex;justify-content:space-between;background:var(--ink);padding:12px 20px;color:#cfe6e3;font-size:.9rem}.mini a{color:#fff;font-weight:600;text-decoration:none}
.player-wrap{max-width:900px;margin:0 auto;padding:20px}
.player-wrap video{width:100%;max-height:75vh;background:#000;border-radius:12px}
.desc{max-width:70ch}.notice{font-size:.8rem;color:var(--muted);margin-top:28px;max-width:70ch}
