/* Symma Studio – opettajan ohjeet: yhteiset tyylit (fi + en). Pohja: oppilasohjeet_src/assets/guide.css.
 * Galleria (.gal/.vlb) ja etusivu (main.home) on rajattu säiliöihinsä, koska sivujen pienoismallit käyttävät samoja luokkanimiä. */
:root{--pri:#059669; --pri-dark:#047857; --pri-deep:#064e3b; --pri-soft:#d1fae5; --pri-bg:#ecfdf5;
  --ink:#0f172a; --ink2:#1e293b; --muted:#475569; --soft:#64748b; --faint:#94a3b8;
  --line:#e2e8f0; --line2:#cbd5e1; --bg:#eef2f7;
  --help-bg:#ecfdf5; --help-line:#34d399; --help-ink:#065f46;
  --warn-bg:#fef3c7; --warn-line:#f59e0b; --warn-ink:#92400e;
  --ok-bg:#ecfdf5; --ok-line:#34d399; --ok-ink:#065f46;}
*{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:62px}
body{margin:0; background:var(--bg); color:var(--ink2);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; line-height:1.6}
body.modal-open{overflow:hidden}
a{color:var(--pri-dark)}
img{max-width:100%}
.gbar{position:sticky; top:0; z-index:200; background:#0f172a; border-bottom:1px solid rgba(255,255,255,.08);
  display:flex; align-items:center; gap:14px; padding:0 18px; height:52px}
.gbar-brand{display:flex; align-items:center; gap:9px; color:#fff; text-decoration:none; font-weight:800; font-size:.98rem; white-space:nowrap}
.gbar-logo{width:28px; height:28px; border-radius:7px; background:linear-gradient(135deg,#10b981,#047857); display:flex; align-items:center; justify-content:center; font-size:1rem; color:#fff}
.gbar-sub{font-size:.7rem; font-weight:600; color:#6ee7b7; border:1px solid rgba(110,231,183,.4); padding:1px 7px; border-radius:20px; margin-left:2px}
.gbar-links{margin-left:auto; display:flex; gap:2px; flex-wrap:wrap; align-items:center}
.gbar-links a{color:#cbd5e1; text-decoration:none; font-weight:600; font-size:.82rem; padding:6px 10px; border-radius:7px}
.gbar-links a:hover{background:rgba(255,255,255,.08); color:#fff}
.gbar-links a.home{color:#6ee7b7}
.gbar-links a.on{background:rgba(110,231,183,.14); color:#fff}
.lang{display:inline-flex; border:1px solid rgba(255,255,255,.2); border-radius:8px; overflow:hidden; margin-left:8px}
.lang a{padding:4px 9px !important; border-radius:0 !important; font-size:.75rem !important; letter-spacing:.04em}
.lang a.cur{background:#fff; color:#0f172a !important}
@media(max-width:820px){.gbar-links a.nav{display:none}}
.hero{position:relative; overflow:hidden; color:#fff; padding:60px 22px 78px;
  background:radial-gradient(900px 380px at 80% -10%, rgba(255,255,255,.16), transparent 60%),
             linear-gradient(135deg,#064e3b 0%,#059669 52%,#10b981 100%)}
.hero .wrap{max-width:1120px; margin:0 auto; position:relative}
.eyebrow{display:inline-flex; align-items:center; gap:8px; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.28); padding:6px 14px; border-radius:20px; font-size:.78em; font-weight:600; letter-spacing:.04em}
.hero h1{margin:18px 0 12px; font-size:2.6em; line-height:1.1; letter-spacing:-.8px; max-width:20ch}
.hero p.intro{margin:0; font-size:1.14em; max-width:62ch; opacity:.95}
.hero .quick{display:flex; gap:10px; flex-wrap:wrap; margin-top:26px}
.hero .quick a{display:inline-flex; align-items:center; gap:8px; background:#fff; color:var(--pri-deep); text-decoration:none; font-weight:700; font-size:.92em; padding:10px 16px; border-radius:11px; box-shadow:0 8px 20px rgba(15,23,42,.18)}
.hero .quick a.alt{background:rgba(255,255,255,.14); color:#fff; border:1px solid rgba(255,255,255,.3); box-shadow:none}
.hero .quick a:hover{transform:translateY(-1px)}
@media(max-width:640px){.hero h1{font-size:2em}}
main.home{max-width:1120px; margin:0 auto; padding:0 22px 80px}
main.home .firststeps{background:#fff; border:1px solid var(--line); border-radius:18px; padding:26px 30px; margin:-44px 0 10px; box-shadow:0 20px 50px rgba(15,23,42,.10); position:relative}
main.home .firststeps h2{margin:0 0 4px; font-size:1.3em}
main.home .firststeps > p{margin:0 0 16px; color:var(--muted)}
main.home .steps{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; counter-reset:st}
@media(max-width:860px){main.home .steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){main.home .steps{grid-template-columns:1fr}}
main.home .step{background:#f8fafc; border:1px solid var(--line); border-radius:12px; padding:14px 16px 14px; position:relative; text-decoration:none; color:inherit; display:block}
main.home .step:hover{border-color:var(--pri)}
main.home .step::before{counter-increment:st; content:counter(st); position:absolute; top:12px; right:14px; width:24px; height:24px; border-radius:50%; background:var(--pri); color:#fff; font-size:.75em; font-weight:800; display:flex; align-items:center; justify-content:center}
main.home .step b{display:block; font-size:.96em; padding-right:30px}
main.home .step span{display:block; font-size:.86em; color:var(--soft); margin-top:4px}
main.home .catsec{margin-top:44px; scroll-margin-top:78px}
main.home .cathead{display:flex; align-items:center; gap:13px; margin-bottom:6px}
main.home .cathead .ci{width:40px; height:40px; border-radius:11px; display:flex; align-items:center; justify-content:center; font-size:1.25em; color:#fff; flex:0 0 auto}
main.home .cathead h2{margin:0; font-size:1.42em}
main.home .cathead .cd{font-size:.9em; color:var(--soft); margin:1px 0 0}
main.home .catrule{height:3px; border-radius:3px; margin:10px 0 20px; opacity:.85}
main.home .grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px}
@media(max-width:880px){main.home .grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){main.home .grid{grid-template-columns:1fr}}
main.home a.card{display:flex; flex-direction:column; gap:6px; background:#fff; border:1px solid var(--line); border-radius:14px; padding:17px 18px; text-decoration:none; color:inherit;
  transition:transform .14s ease, box-shadow .14s ease, border-color .14s ease; box-shadow:0 2px 8px rgba(15,23,42,.04)}
main.home a.card:hover{transform:translateY(-3px); box-shadow:0 14px 30px rgba(15,23,42,.12); border-color:var(--accent,#cbd5e1)}
main.home a.card .top{display:flex; align-items:center; gap:11px}
main.home a.card .emo{width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:1.15em; background:var(--accent-soft,#eef2ff); flex:0 0 auto}
main.home a.card h3{margin:0; font-size:1.04em; font-weight:700}
main.home a.card p{margin:2px 0 0; font-size:.88em; color:var(--soft); line-height:1.5}
main.home a.card .go{margin-top:auto; padding-top:6px; font-size:.82em; font-weight:700; color:var(--accent,#4f46e5); display:flex; align-items:center; gap:8px}
main.home a.card .go .vid{margin-left:auto; font-size:.95em; color:var(--soft); font-weight:600}
.vidband{margin-top:44px; background:linear-gradient(160deg,#020617 0%,#0f172a 60%,#064e3b 140%); border-radius:18px; padding:28px 30px 30px; color:#e2e8f0; box-shadow:0 20px 50px rgba(2,6,23,.22); scroll-margin-top:78px}
.vidband[hidden]{display:none}
.vb-head{display:flex; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:18px}
.vb-head > div{margin-right:auto}
.vb-eyebrow{font-size:.74em; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#6ee7b7}
.vidband h2{margin:4px 0 2px; font-size:1.4em; color:#fff}
.vidband p{margin:0; color:#94a3b8; font-size:.93em}
.vb-all{color:#0f172a; background:#6ee7b7; text-decoration:none; font-weight:700; font-size:.88em; padding:9px 16px; border-radius:10px; white-space:nowrap}
.vb-all:hover{background:#a7f3d0}
.vb-row{display:grid; grid-template-columns:repeat(4,1fr); gap:14px}
@media(max-width:880px){.vb-row{grid-template-columns:repeat(2,1fr)}}
.vb-card{text-decoration:none; color:#f1f5f9; display:flex; flex-direction:column; gap:8px}
.vb-th{position:relative; display:block; aspect-ratio:16/9; border-radius:11px; overflow:hidden; background:#1e293b; border:1px solid rgba(255,255,255,.08)}
.vb-th img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease}
.vb-card:hover .vb-th img{transform:scale(1.06)}
.vb-dur{position:absolute; right:8px; bottom:8px; background:rgba(2,6,23,.82); font-size:.72em; font-weight:700; padding:2px 7px; border-radius:6px}
.vb-t{font-weight:700; font-size:.93em}
header.phero{color:#fff; padding:50px 18px 46px; text-align:center; background:linear-gradient(135deg,var(--h1,#064e3b),var(--h2,#059669) 55%,var(--h3,#10b981))}
header.phero .inner{max-width:920px; margin:0 auto}
.phero .emoji{font-size:52px; line-height:1}
.phero h1{margin:14px 0 6px; font-size:2.05em; letter-spacing:-.5px}
.phero p{margin:0 auto; max-width:660px; font-size:1.05em; opacity:.95}
.phero .pill{display:inline-block; margin-top:18px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.3); padding:6px 15px; border-radius:20px; font-size:.82em; letter-spacing:.3px}
.wrap{max-width:920px; margin:0 auto; padding:0 18px 80px}
nav.toc{background:#fff; border:1px solid var(--line); border-radius:14px; margin:-28px auto 36px; padding:18px 22px; box-shadow:0 10px 30px rgba(15,23,42,.08); position:relative}
nav.toc h2{margin:0 0 10px; font-size:.78em; text-transform:uppercase; letter-spacing:1.2px; color:var(--faint)}
nav.toc ol{margin:0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:6px 26px}
nav.toc a{color:var(--pri-dark); text-decoration:none; font-weight:600; font-size:.93em; display:flex; gap:9px; padding:5px 6px; border-radius:7px}
nav.toc a:hover{background:var(--bg)}
nav.toc a span{color:var(--faint); font-variant-numeric:tabular-nums}
@media(max-width:640px){nav.toc ol{grid-template-columns:1fr}}
.guide-video{margin:0 0 42px}
.guide-video[hidden]{display:none}
.guide-video h2{font-size:1.2em; margin:0 0 10px; display:flex; align-items:center; gap:10px}
.gv-frame{position:relative; padding-top:56.25%; border-radius:12px; overflow:hidden; background:#0f172a; box-shadow:0 14px 34px rgba(15,23,42,.16)}
.gv-frame iframe{position:absolute; inset:0; width:100%; height:100%; border:0}
.guide-video .gv-note{font-size:.86em; color:var(--soft); margin:8px 0 0}
section.gs{margin-bottom:46px}
h2.sec{font-size:1.5em; margin:0 0 4px; display:flex; align-items:center; gap:12px; padding-bottom:10px; border-bottom:2px solid var(--line)}
h2.sec .num{flex:0 0 auto; width:34px; height:34px; border-radius:9px; background:var(--acc,var(--pri)); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:.66em; font-weight:700}
h3{font-size:1.12em; margin:26px 0 8px; color:var(--ink)}
p{margin:10px 0}
.lead{font-size:1.05em; color:var(--muted)}
ul.clean, ol.clean{margin:10px 0; padding-left:22px}
ul.clean li, ol.clean li{margin:6px 0}
.callout{background:var(--help-bg); border-left:4px solid var(--help-line); color:var(--help-ink); padding:12px 16px; border-radius:8px; margin:16px 0; font-size:.95em}
.callout.warn{background:var(--warn-bg); border-left-color:var(--warn-line); color:var(--warn-ink)}
.callout.ok{background:var(--ok-bg); border-left-color:var(--ok-line); color:var(--ok-ink)}
.callout.tip::before{content:"💡 "}
.path{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:14px 0; font-size:.92em}
.path .crumb{background:#fff; border:1px solid var(--line2); border-radius:8px; padding:6px 12px; font-weight:600; color:var(--muted)}
.path .arr{color:var(--faint); font-weight:700}
.kbd{font-family:ui-monospace,Menlo,Consolas,monospace; background:#eef2f7; border:1px solid var(--line2); border-radius:5px; padding:1px 7px; font-size:.86em}
.ui{display:inline-block; background:#fff; border:1px solid var(--line2); border-radius:6px; padding:0 7px; font-size:.9em; font-weight:600; color:var(--ink2); white-space:nowrap}
table.def{width:100%; border-collapse:collapse; margin:14px 0; font-size:.93em; background:#fff; border:1px solid var(--line); border-radius:10px; overflow:hidden}
table.def th, table.def td{text-align:left; padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:top}
table.def th{background:#f8fafc; font-size:.85em; color:var(--muted)}
table.def tr:last-child td{border-bottom:0}
.crosslinks{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:14px}
@media(max-width:600px){.crosslinks{grid-template-columns:1fr}}
.crosslink{display:block; padding:12px 16px; background:var(--pri-bg); border:1px solid var(--pri-soft); border-radius:10px; font-size:.93em; color:var(--pri-dark); text-decoration:none; font-weight:600}
.crosslink:hover{background:var(--pri-soft)}
.pager{display:flex; justify-content:space-between; gap:12px; margin-top:50px; flex-wrap:wrap}
.pager a{flex:1 1 240px; display:block; background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px 16px; text-decoration:none; color:var(--ink2)}
.pager a:hover{border-color:var(--pri)}
.pager a small{display:block; color:var(--faint); font-size:.78em; text-transform:uppercase; letter-spacing:.08em}
.pager a b{font-size:.98em}
.pager a.next{text-align:right}
footer.foot{text-align:center; color:var(--faint); font-size:.85em; padding:30px 18px 0; border-top:1px solid var(--line); max-width:1120px; margin:0 auto}
main.home + footer.foot{padding-bottom:30px}
.toplink{position:fixed; right:20px; bottom:20px; background:var(--pri); color:#fff; width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center; text-decoration:none; box-shadow:0 8px 20px rgba(5,150,105,.4); font-size:20px; z-index:40}
.mock{margin:20px 0 8px; border-radius:12px; overflow:hidden; box-shadow:0 14px 34px rgba(15,23,42,.16); border:1px solid var(--line); background:#fff}
.mock .bar{background:#e9eef5; padding:9px 12px; display:flex; align-items:center; gap:7px; border-bottom:1px solid var(--line)}
.mock .dot{width:11px; height:11px; border-radius:50%}
.mock .dot.r{background:#f87171}
.mock .dot.y{background:#fbbf24}
.mock .dot.g{background:#34d399}
.mock .bar .ttl{margin-left:10px; font-size:.8em; color:var(--soft); font-weight:600}
.mock .screen{background:#f4f6fb; padding:16px 18px; font-size:14px; color:var(--ink2)}
figcaption{font-size:.84em; color:var(--faint); text-align:center; margin:6px 0 0; font-style:italic}
.m-top{display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:#fff; border:1px solid var(--line); border-radius:10px; padding:8px 10px; margin-bottom:12px}
.m-top .t{font-weight:800; font-size:.95em; margin-right:auto}
.m-btn{display:inline-flex; align-items:center; gap:5px; border:1px solid var(--line2); background:#fff; color:#334155; border-radius:8px; padding:5px 10px; font-size:.78em; font-weight:600; white-space:nowrap}
.m-btn.pri{background:var(--pri); border-color:var(--pri); color:#fff}
.m-btn.hl{box-shadow:0 0 0 3px rgba(37,99,235,.35); border-color:var(--pri)}
.m-btn.ok{background:#16a34a; border-color:#16a34a; color:#fff}
.m-btn.red{background:#fee2e2; border-color:#fecaca; color:#b91c1c}
.m-card{background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px 14px}
.m-h{font-weight:700; font-size:.9em; margin:0 0 8px; display:flex; align-items:center; gap:8px}
.m-sub{font-size:.76em; color:var(--soft)}
.m-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
@media(max-width:640px){.m-grid{grid-template-columns:1fr 1fr}}
.m-row{display:flex; align-items:center; gap:8px; border:1px solid var(--line); border-radius:9px; padding:8px 11px; background:#fff; margin-bottom:7px; font-size:.86em}
.m-row .r{margin-left:auto; display:flex; gap:6px; align-items:center}
.m-badge{display:inline-flex; align-items:center; gap:4px; font-size:.72em; font-weight:700; padding:2px 8px; border-radius:20px; background:#f1f5f9; color:var(--muted); white-space:nowrap}
.m-badge.blue{background:#dbeafe; color:#1d4ed8}
.m-badge.green{background:#dcfce7; color:#15803d}
.m-badge.amber{background:#fef3c7; color:#b45309}
.m-badge.red{background:#fee2e2; color:#b91c1c}
.m-badge.violet{background:#ede9fe; color:#6d28d9}
.m-tabs{display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px}
.m-tab{border:1px solid var(--line2); background:#fff; border-radius:9px; padding:6px 12px; font-size:.8em; font-weight:600; color:var(--muted)}
.m-tab.on{background:var(--pri); border-color:var(--pri); color:#fff}
.m-progress{height:9px; background:#e2e8f0; border-radius:9px; overflow:hidden}
.m-progress i{display:block; height:100%; background:linear-gradient(90deg,#3b82f6,#22c55e)}
.m-split{display:grid; grid-template-columns:200px 1fr; gap:12px}
@media(max-width:640px){.m-split{grid-template-columns:1fr}}
.m-side .it{padding:7px 10px; border-radius:8px; font-size:.82em; color:var(--muted); display:flex; gap:7px; align-items:center}
.m-side .it.on{background:var(--pri-bg); color:var(--pri-dark); font-weight:700}
.m-inp{border:1px solid var(--line2); border-radius:7px; padding:7px 10px; font-size:.84em; background:#fff; color:var(--faint)}
.m-inp.v{color:var(--ink2)}
.m-area{min-height:70px}
.m-label{display:block; font-size:.76em; font-weight:600; color:var(--muted); margin:8px 0 4px}
.m-hl{outline:3px solid rgba(37,99,235,.45); outline-offset:2px; border-radius:8px}
.num-dot{display:inline-flex; width:20px; height:20px; border-radius:50%; background:#f59e0b; color:#fff; font-size:.7em; font-weight:800; align-items:center; justify-content:center; vertical-align:middle}
.vhero{position:relative; overflow:hidden; color:#fff; padding:56px 22px 120px;
  background:radial-gradient(1000px 420px at 85% -20%, rgba(16,185,129,.34), transparent 60%),
             radial-gradient(700px 360px at 0% 120%, rgba(14,165,233,.18), transparent 60%),
             linear-gradient(160deg,#020617 0%,#0f172a 55%,#064e3b 130%)}
.vhero .wrap2{max-width:1180px; margin:0 auto; position:relative}
.vhero .eyebrow{background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.16)}
.vhero h1{margin:18px 0 12px; font-size:2.6em; line-height:1.08; letter-spacing:-.9px; max-width:22ch}
.vhero h1 em{font-style:normal; background:linear-gradient(90deg,#6ee7b7,#a5f3fc); -webkit-background-clip:text; background-clip:text; color:transparent}
.vhero p{margin:0; font-size:1.1em; max-width:60ch; color:#cbd5e1}
.vhero .stats{display:flex; gap:30px; flex-wrap:wrap; margin-top:28px}
.vhero .stats .v{display:block; font-size:1.55em; font-weight:800}
.vhero .stats .l{font-size:.82em; color:#94a3b8}
main.gal{max-width:1180px; margin:-84px auto 0; padding:0 22px 90px; position:relative}
.gal .feature{display:grid; grid-template-columns:1.45fr 1fr; background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 30px 70px rgba(2,6,23,.22); border:1px solid rgba(15,23,42,.06); cursor:pointer}
@media(max-width:860px){.gal .feature{grid-template-columns:1fr}}
.gal .feature .fthumb{position:relative; aspect-ratio:16/9; background:#0f172a; overflow:hidden}
.gal .feature .fthumb img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s ease}
.gal .feature:hover .fthumb img{transform:scale(1.04)}
.gal .feature .fbody{padding:30px 32px; display:flex; flex-direction:column; justify-content:center; gap:10px}
.gal .feature .tag{align-self:flex-start; font-size:.72em; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--pri-dark); background:var(--pri-bg); border:1px solid var(--pri-soft); padding:3px 10px; border-radius:20px}
.gal .feature h2{margin:4px 0 0; font-size:1.75em; letter-spacing:-.4px; color:var(--ink)}
.gal .feature p{margin:0; color:var(--muted)}
.gal .feature .fmeta{display:flex; gap:14px; flex-wrap:wrap; font-size:.86em; color:var(--soft); margin-top:4px}
.gal .btn-play{align-self:flex-start; margin-top:10px; display:inline-flex; align-items:center; gap:10px; background:var(--ink); color:#fff; border:0; border-radius:12px; padding:12px 20px; font-weight:700; font-size:.95em; cursor:pointer; font-family:inherit}
.gal .btn-play:hover{background:var(--pri-dark)}
.gal .btn-play .tri{width:0; height:0; border-left:11px solid currentColor; border-top:7px solid transparent; border-bottom:7px solid transparent}
.gal .playbadge{position:absolute; left:50%; top:50%; width:66px; height:66px; margin:-33px 0 0 -33px; border-radius:50%; background:rgba(255,255,255,.92); box-shadow:0 10px 30px rgba(2,6,23,.35); display:flex; align-items:center; justify-content:center; transition:transform .2s ease, opacity .2s}
.gal .playbadge::after{content:""; margin-left:5px; border-left:20px solid var(--ink); border-top:12px solid transparent; border-bottom:12px solid transparent}
.gal .feature:hover .playbadge{transform:scale(1.1)}
.gal .dur{position:absolute; right:10px; bottom:10px; background:rgba(2,6,23,.82); color:#fff; font-size:.76em; font-weight:700; padding:3px 8px; border-radius:6px; font-variant-numeric:tabular-nums; z-index:1}
.gal .toolbar{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:42px 0 20px}
.gal .toolbar h2{margin:0 auto 0 0; font-size:1.35em; color:var(--ink)}
.gal .search{position:relative}
.gal .search input{width:240px; max-width:70vw; padding:9px 14px 9px 36px; border:1px solid var(--line2); border-radius:10px; font-size:.92em; font-family:inherit; background:#fff; color:var(--ink2)}
.gal .search input:focus{outline:none; border-color:var(--pri); box-shadow:0 0 0 3px rgba(5,150,105,.15)}
.gal .search::before{content:"⌕"; position:absolute; left:12px; top:50%; transform:translateY(-52%); color:var(--faint); font-size:1.15em}
.gal .chips{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:22px}
.gal .chip{border:1px solid var(--line2); background:#fff; color:var(--muted); border-radius:20px; padding:6px 14px; font-size:.86em; font-weight:600; cursor:pointer; font-family:inherit; display:inline-flex; align-items:center; gap:6px}
.gal .chip.on{background:var(--ink); border-color:var(--ink); color:#fff}
.gal .chip .n{font-size:.8em; opacity:.65}
.gal .vgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:20px}
.gal .vcard{background:#fff; border:1px solid var(--line); border-radius:14px; overflow:hidden; cursor:pointer; display:flex; flex-direction:column; transition:transform .16s ease, box-shadow .16s ease; box-shadow:0 2px 8px rgba(15,23,42,.04); text-align:left; padding:0; font-family:inherit; color:inherit}
.gal .vcard:hover, .gal .vcard:focus-visible{transform:translateY(-4px); box-shadow:0 18px 38px rgba(15,23,42,.14); outline:none}
.gal .vcard .th{position:relative; aspect-ratio:16/9; background:#0f172a; overflow:hidden}
.gal .vcard .th img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease}
.gal .vcard:hover .th img{transform:scale(1.06)}
.gal .vcard .playbadge{width:50px; height:50px; margin:-25px 0 0 -25px; opacity:0}
.gal .vcard .playbadge::after{border-left-width:15px; border-top-width:9px; border-bottom-width:9px; margin-left:4px}
.gal .vcard:hover .playbadge, .gal .vcard:focus-visible .playbadge{opacity:1}
.gal .vcard .vb{padding:14px 16px 16px; display:flex; flex-direction:column; gap:6px; flex:1}
.gal .cat, .vlb .cat{align-self:flex-start; font-size:.72em; font-weight:700; padding:2px 9px; border-radius:20px; color:#fff}
.gal .vcard h3{margin:0; font-size:1.02em; color:var(--ink)}
.gal .vcard p{margin:0; font-size:.85em; color:var(--soft); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.gal .empty{display:none; text-align:center; color:var(--soft); padding:40px 0}
.gal .novideos{background:#fff; border:1px solid var(--line); border-radius:20px; padding:46px 30px; text-align:center; box-shadow:0 30px 70px rgba(2,6,23,.16)}
.gal .novideos .big{font-size:48px}
.gal .novideos h2{margin:10px 0 6px}
.gal .novideos p{color:var(--muted); max-width:52ch; margin:0 auto 16px}
.gal .soon{margin-top:46px; border:1px dashed var(--line2); border-radius:14px; padding:18px 22px; color:var(--soft); font-size:.92em; background:rgba(255,255,255,.55)}
.vlb{position:fixed; inset:0; z-index:500; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(2,6,23,.78); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px)}
.vlb.open{display:flex; animation:fade .18s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes rise{from{opacity:0; transform:translateY(14px) scale(.985)}to{opacity:1; transform:none}}
.vlb .lb-dialog{width:min(1280px,100%); max-height:calc(100vh - 48px); display:grid; grid-template-columns:minmax(0,1fr) 320px; background:#0b1220; border-radius:18px; overflow:hidden; box-shadow:0 40px 100px rgba(0,0,0,.55); border:1px solid rgba(255,255,255,.08); animation:rise .22s ease}
@media(max-width:980px){.vlb .lb-dialog{grid-template-columns:1fr; overflow:auto}}
.vlb .lb-player{position:relative; background:#000; aspect-ratio:16/9; align-self:start}
.vlb .lb-player iframe{position:absolute; inset:0; width:100%; height:100%; border:0}
.vlb .lb-side{color:#e2e8f0; padding:22px 22px 18px; display:flex; flex-direction:column; gap:10px; overflow:auto; max-height:calc(100vh - 48px)}
@media(max-width:980px){.vlb .lb-side{max-height:none}}
.vlb .lb-side h2{margin:2px 0 0; font-size:1.3em; color:#fff}
.vlb .lb-side .meta{font-size:.82em; color:#94a3b8; display:flex; gap:12px; flex-wrap:wrap}
.vlb .lb-side p{margin:0; font-size:.9em; color:#cbd5e1}
.vlb .lb-links{display:flex; flex-direction:column; gap:6px; margin-top:4px}
.vlb .lb-links a{color:#6ee7b7; text-decoration:none; font-weight:600; font-size:.88em; background:rgba(110,231,183,.08); border:1px solid rgba(110,231,183,.22); border-radius:9px; padding:8px 12px}
.vlb .lb-links a:hover{background:rgba(110,231,183,.16)}
.vlb .lb-next{margin-top:10px; border-top:1px solid rgba(255,255,255,.08); padding-top:14px}
.vlb .lb-next h4{margin:0 0 10px; font-size:.74em; text-transform:uppercase; letter-spacing:.1em; color:#64748b}
.vlb .nx{display:flex; gap:10px; align-items:center; padding:6px; margin:0 -6px 4px; border-radius:10px; cursor:pointer; background:none; border:0; width:calc(100% + 12px); text-align:left; color:inherit; font-family:inherit}
.vlb .nx:hover, .vlb .nx:focus-visible{background:rgba(255,255,255,.06); outline:none}
.vlb .nx img{width:112px; aspect-ratio:16/9; object-fit:cover; border-radius:7px; flex:0 0 auto; background:#1e293b}
.vlb .nx b{display:block; font-size:.86em; color:#f1f5f9}
.vlb .nx small{color:#94a3b8; font-size:.76em}
.vlb .lb-close, .vlb .lb-nav{position:fixed; width:44px; height:44px; border-radius:50%; border:1px solid rgba(255,255,255,.2); background:rgba(15,23,42,.7); color:#fff; font-size:22px; cursor:pointer; display:flex; align-items:center; justify-content:center}
.vlb .lb-close{top:16px; right:18px}
.vlb .lb-nav{top:50%; transform:translateY(-50%)}
.vlb .lb-close:hover, .vlb .lb-nav:hover{background:rgba(255,255,255,.14)}
.vlb .lb-nav.prev{left:14px}
.vlb .lb-nav.next{right:14px}
.vlb .lb-nav[hidden]{display:none}
@media(max-width:1380px){.vlb .lb-nav{display:none}}
figure.shot{margin:20px 0 8px; border-radius:12px; overflow:hidden; box-shadow:0 14px 34px rgba(15,23,42,.16); border:1px solid var(--line); background:#fff; cursor:zoom-in; position:relative}
figure.shot img{display:block; width:100%; height:auto}
figure.shot.narrow{max-width:560px; margin-left:auto; margin-right:auto}
figure.shot.mid{max-width:760px; margin-left:auto; margin-right:auto}
figure.shot::after{content:"⤢"; position:absolute; right:10px; top:10px; width:30px; height:30px; border-radius:8px; background:rgba(15,23,42,.6); color:#fff; display:flex; align-items:center; justify-content:center; font-size:15px; opacity:0; transition:opacity .15s}
figure.shot:hover::after{opacity:1}
.zoom{position:fixed; inset:0; z-index:600; background:rgba(2,6,23,.85); display:flex; align-items:center; justify-content:center; padding:24px; cursor:zoom-out; animation:fade .15s ease}
.zoom img{max-width:100%; max-height:100%; border-radius:10px; box-shadow:0 30px 80px rgba(0,0,0,.5); background:#fff}
.hero .meta{display:flex; gap:26px; flex-wrap:wrap; margin-top:30px}
.hero .meta .m{display:flex; flex-direction:column}
.hero .meta .v{font-size:1.5em; font-weight:800}
.hero .meta .l{font-size:.82em; opacity:.82}
main.home .about{background:#fff; border:1px solid var(--line); border-radius:18px; padding:30px 32px; margin:-40px 0 14px; box-shadow:0 20px 50px rgba(15,23,42,.10); position:relative}
main.home .about h2{margin:0 0 10px; font-size:1.35em}
main.home .about p{margin:10px 0; color:var(--muted); font-size:1.02em}
main.home .about .feats{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:20px}
@media(max-width:760px){main.home .about .feats{grid-template-columns:1fr}}
main.home .about .feat{background:#f8fafc; border:1px solid var(--line); border-radius:12px; padding:14px 16px}
main.home .about .feat .fh{font-weight:700; font-size:.98em; display:flex; align-items:center; gap:8px}
main.home .about .feat p{margin:5px 0 0; font-size:.9em}
main.home .studentinfo{margin-top:40px; background:linear-gradient(135deg,#064e3b 0%,#065f46 60%,#047857 100%); border-radius:18px; padding:32px 34px; color:#ecfdf5; box-shadow:0 20px 50px rgba(6,78,59,.20); position:relative; overflow:hidden}
main.home .studentinfo::after{content:""; position:absolute; inset:0; background:radial-gradient(700px 300px at 88% -20%, rgba(255,255,255,.12), transparent 60%); pointer-events:none}
main.home .studentinfo .si-head{display:flex; align-items:center; gap:12px; margin-bottom:8px; position:relative}
main.home .studentinfo .si-ic{width:42px; height:42px; border-radius:11px; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.22); display:flex; align-items:center; justify-content:center; font-size:1.3em; flex:0 0 auto}
main.home .studentinfo h2{margin:0; font-size:1.4em; color:#fff}
main.home .studentinfo .si-sub{font-size:.86em; color:#a7f3d0; margin:1px 0 0}
main.home .studentinfo p.si-lead{margin:6px 0 0; font-size:1.04em; color:#d1fae5; max-width:72ch; position:relative}
main.home .studentinfo .sgrid{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:22px; position:relative}
@media(max-width:760px){main.home .studentinfo .sgrid{grid-template-columns:1fr}}
main.home .studentinfo .scard{background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.16); border-radius:13px; padding:16px 17px}
main.home .studentinfo .scard .sh{font-weight:700; font-size:1em; color:#fff; display:flex; align-items:center; gap:9px}
main.home .studentinfo .scard p{margin:7px 0 0; font-size:.9em; color:#d1fae5; line-height:1.55}
.newtag{display:inline-block; font-size:.62em; font-weight:700; letter-spacing:.4px; text-transform:uppercase; background:#dcfce7; color:#166534; border:1px solid #bbf7d0; border-radius:6px; padding:2px 7px; margin-left:4px; vertical-align:middle}
.reqtag{font-size:.6em; color:#dc2626; font-weight:700; border:1px solid #fecaca; background:#fef2f2; padding:2px 9px; border-radius:10px; margin-left:6px}
