/* Shared styles for prompts.html and cyberlaw.html (loads after style.css) */
.page-hero{padding:120px 0 40px}
.page-hero h1{font:700 clamp(2rem,5vw,3.2rem)/1.12 var(--font-head);margin:0 0 14px;letter-spacing:-.01em}
.page-hero .lead{max-width:680px}
.ethics{display:flex;gap:12px;align-items:flex-start;border:1px solid color-mix(in srgb,var(--amber) 55%,var(--glass-border));background:linear-gradient(120deg,color-mix(in srgb,var(--amber) 14%,transparent),transparent 70%),var(--glass);
  -webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));border-radius:14px;padding:14px 18px;margin:0 0 24px;color:var(--text);font-weight:500}
.ethics svg{flex:none;color:var(--amber);margin-top:2px}
.muted{color:var(--muted)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.verify{display:inline-block;font:600 .68rem var(--mono);letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:999px;
  color:var(--amber);border:1px solid color-mix(in srgb,var(--amber) 60%,transparent);background:color-mix(in srgb,var(--amber) 10%,transparent);vertical-align:middle;margin-left:6px;cursor:help}
.src{font-size:.82rem;color:var(--purple-2);text-underline-offset:3px;white-space:nowrap}
[data-theme="light"] .src{color:var(--purple)}
.src:hover{color:var(--text)}
.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:18px}
.search{position:relative;flex:1 1 280px;max-width:460px}
.search input{padding-left:40px}
.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.count{font-size:.88rem;color:var(--muted);margin:0 0 18px}
:focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}
[data-theme="light"] :focus-visible{outline-color:var(--purple)}

/* ---------- CyberPrompts ---------- */
.p-chips{margin-bottom:12px}
.p-chips .chip .n{opacity:1;color:var(--muted);margin-left:4px;font-size:.75rem}
.p-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:18px}
.p-card{display:flex;flex-direction:column;gap:10px;padding:20px}
.p-card h3{margin:0;font:600 1.08rem/1.3 var(--font-head)}
.p-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.p-top .tag{margin-bottom:8px}
.p-use{margin:0;color:var(--muted);font-size:.92rem}
.fav{flex:none;background:none;border:1px solid var(--glass-border);border-radius:10px;width:36px;height:36px;display:grid;place-items:center;color:var(--muted);cursor:pointer;transition:color .2s,border-color .2s,transform .2s var(--ease)}
.fav:hover{color:var(--amber);border-color:var(--amber)}
.fav[aria-pressed="true"]{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 60%,transparent);background:color-mix(in srgb,var(--amber) 12%,transparent)}
.fav[aria-pressed="true"] svg{fill:currentColor}
.fav:active{transform:scale(.9)}
.code-box{position:relative;border-radius:12px;background:rgba(10,8,16,.86);border:1px solid rgba(183,156,255,.18)}
.code-box pre{margin:0;padding:14px 14px 14px;max-height:260px;overflow:auto;font:400 .8rem/1.6 var(--mono);color:#D9F99D;white-space:pre-wrap;word-break:break-word}
.code-box pre .ph{color:#C4B5FD;background:rgba(139,92,246,.18);border-radius:4px;padding:0 2px}
.code-box .copy{position:absolute;top:8px;right:8px;grid-row:auto;grid-column:auto;background:rgba(30,24,44,.9);color:#E9E6F2;border-color:rgba(183,156,255,.3)}
.code-box .copy.ok{color:#4ADE80;border-color:#4ADE80}
.code-box pre{padding-top:38px}
.p-tip,.p-model{margin:0;font-size:.86rem}
.p-tip b,.p-model b{color:var(--text)}
.p-model{color:var(--muted)}
.empty{padding:40px 20px;text-align:center;color:var(--muted)}

/* ---------- Cyber Law India ---------- */
.law-page{--serif:'Libre Baskerville',Georgia,'Times New Roman',serif}
.law-page h1,.law-page h2,.law-page .section-head h2,.law-page h3.serif{font-family:var(--serif);letter-spacing:0}
.law-page .section-head h2{font-size:clamp(1.6rem,3.4vw,2.2rem);font-weight:700;line-height:1.2;margin:0 0 10px}
.law-hero{padding:116px 0 30px}
.law-hero-grid{display:grid;grid-template-columns:1.25fr .9fr;gap:40px;align-items:center}
.law-hero h1{font:700 clamp(1.9rem,4.4vw,3.05rem)/1.18 var(--serif);margin:0 0 6px}
.law-hero h1 .hl{background:linear-gradient(90deg,var(--purple-2),var(--green-2));-webkit-background-clip:text;background-clip:text;color:transparent}
[data-theme="light"] .law-hero h1 .hl{background:linear-gradient(90deg,#5B21B6,#166534);-webkit-background-clip:text;background-clip:text}
.ink{display:block;width:min(100%,520px);height:40px;margin:0 0 14px;overflow:visible}
.ink path{fill:none;stroke:var(--purple-2);stroke-width:3;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}
[data-theme="light"] .ink path{stroke:var(--purple)}
.ink .nib{transform-box:fill-box;opacity:0}
.law-sub{font-size:1.05rem;max-width:640px}
.law-note{font-size:.92rem;color:var(--muted);max-width:640px}
.law-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}
.law-cards .card{padding:18px}
.law-cards .k{font:700 1.4rem var(--serif);display:block}
.law-cards .lbl{font:600 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em}
.law-cards .civil .lbl{color:var(--green-2)}
.law-cards .crime .lbl{color:#FCA5A5}
[data-theme="light"] .law-cards .crime .lbl{color:#B91C1C}
.law-cards p{margin:6px 0 8px;font-size:.9rem}
.disclaimer{display:inline-flex;gap:8px;align-items:center;font-size:.86rem;border:1px dashed var(--glass-border);border-radius:10px;padding:8px 12px;color:var(--text)}
.jump{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.jump a{text-decoration:none}

/* courtroom illustration */
.court{position:relative;width:100%;max-width:420px;margin:0 auto;aspect-ratio:1/1}
.court svg{width:100%;height:100%;display:block;overflow:visible}
.court .wood{fill:#7C4A23}.court .wood-d{fill:#5A3416}.court .wood-l{fill:#A8692F}
.court .brass{fill:#E0B04B}.court .brass-d{fill:#B8862B}.court .brass-s{stroke:#E0B04B;fill:none;stroke-width:3}
.court .bk1{fill:#6D28D9}.court .bk2{fill:#166534}.court .bk3{fill:#9F1239}.court .bk4{fill:#1E3A8A}
.court .gold{fill:#FCD34D}.court .page{fill:#F5EBD3}
.court .ripple{fill:none;stroke:var(--purple-2);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}
.court .gavel{transform-origin:330px 300px;transform:rotate(-28deg)}
.court .beam{transform-origin:200px 92px;animation:balance 6s ease-in-out infinite}
.court .pan-l{transform-origin:118px 96px;animation:counter 6s ease-in-out infinite}
.court .pan-r{transform-origin:282px 96px;animation:counter 6s ease-in-out infinite}
@keyframes balance{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes counter{0%,100%{transform:rotate(4deg)}50%{transform:rotate(-4deg)}}
.js .law-page.go .court .gavel{animation:strike 1.1s var(--ease) .25s both}
.js .law-page.go .court .ripple{animation:ripple 1s ease-out .62s both}
.js .law-page.go .court .ripple.r2{animation-delay:.78s}
.js .law-page.go .court .ripple.r3{animation-delay:.94s}
@keyframes strike{0%{transform:rotate(-28deg)}40%{transform:rotate(-46deg)}55%{transform:rotate(6deg)}68%{transform:rotate(-6deg)}100%{transform:rotate(-28deg)}}
@keyframes ripple{0%{opacity:.9;transform:scale(.3)}100%{opacity:0;transform:scale(2.2)}}
.js .law-hero h1{opacity:0;transform:translateY(6px) scale(.985)}
.js .law-page.go .law-hero h1{animation:bang .5s cubic-bezier(.2,1.6,.4,1) .78s both}
@keyframes bang{0%{opacity:0;transform:scale(1.06)}60%{opacity:1;transform:scale(.99)}100%{opacity:1;transform:none}}
.js .law-page.go .ink path{animation:draw 1.3s ease-in-out 1.25s forwards}
.js .law-page.go .ink .nib{animation:nib 1.3s ease-in-out 1.25s both}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes nib{0%{opacity:1;transform:translate(0,0)}100%{opacity:0;transform:translate(480px,-6px)}}
.js .law-page:not(.go) .ink path{stroke-dashoffset:1}

/* gavel tap between sections */
.tap{display:inline-flex;align-items:center;gap:10px;margin-bottom:10px}
.tap svg{width:34px;height:26px;overflow:visible}
.tap .g{transform-origin:24px 20px;transform:rotate(-20deg)}
.tap .rp{fill:none;stroke:var(--purple-2);stroke-width:1.5;opacity:0;transform-box:fill-box;transform-origin:center}
.reveal.in .tap .g{animation:tap .6s var(--ease) .1s both}
.reveal.in .tap .rp{animation:ripple .6s ease-out .32s both}
@keyframes tap{0%{transform:rotate(-20deg)}45%{transform:rotate(-38deg)}70%{transform:rotate(4deg)}100%{transform:rotate(-12deg)}}
.tap .kicker{margin:0}

/* tables */
.tbl-wrap{overflow-x:auto;border-radius:16px;border:1px solid var(--glass-border);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}
table.law{width:100%;border-collapse:collapse;font-size:.9rem;min-width:760px}
table.law caption{text-align:left;padding:12px 16px;color:var(--muted);font-size:.85rem}
table.law th,table.law td{padding:12px 14px;text-align:left;vertical-align:top;border-top:1px solid var(--glass-border)}
table.law thead th{font:600 .76rem var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:color-mix(in srgb,var(--surface) 40%,transparent);position:sticky;top:0}
table.law td.sec{font:700 1rem var(--serif);white-space:nowrap}
table.law tr.struck td{color:var(--muted)}
table.law tr.struck td.sec{text-decoration:line-through}
.kind{font:600 .68rem var(--mono);text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid var(--glass-border);white-space:nowrap}
.kind.offence{color:#FCA5A5;border-color:rgba(252,165,165,.45)}
.kind.civil{color:var(--green-2);border-color:color-mix(in srgb,var(--green-2) 45%,transparent)}
.kind.struck,.kind.rule{color:var(--muted)}
[data-theme="light"] .kind.offence{color:#B91C1C;border-color:rgba(185,28,28,.4)}
.vnote{display:block;font-size:.8rem;color:var(--muted);margin-top:4px}
.filters{margin-bottom:14px}
.bns-note{font-size:.9rem;margin-top:14px}

/* timeline */
.tl{list-style:none;margin:0;padding:0 0 0 26px;position:relative}
.tl::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--purple),var(--green-2))}
.tl li{position:relative;margin-bottom:16px}
.tl li::before{content:"";position:absolute;left:-23px;top:22px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--purple-2)}
.tl .card{padding:16px 18px}
.tl time{font:600 .78rem var(--mono);color:var(--green-2)}
.tl h3{margin:4px 0 6px;font:700 1.02rem/1.35 var(--serif)}
.tl p{margin:0 0 6px;font-size:.92rem}

/* DPDP + procedure */
.dp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.dp-grid .card{padding:18px}
.dp-grid .amt{font:700 1.5rem var(--serif);color:var(--purple-2);display:block;margin-bottom:6px}
[data-theme="light"] .dp-grid .amt{color:var(--purple)}
.dp-grid p{margin:0;font-size:.9rem}
.steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;counter-reset:s}
.steps .card{padding:18px 18px 16px}
.steps .n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;font:700 .9rem var(--serif);color:#fff;background:#7C3AED;margin-right:8px}
.steps h3{display:flex;align-items:center;margin:0 0 8px;font:700 1rem/1.3 var(--serif)}
.steps p{margin:0 0 8px;font-size:.92rem}
.helpline-big{font:700 2rem var(--serif);color:var(--text)}

/* case files */
.cases{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:22px;padding-top:12px}
.case{position:relative;padding:22px 20px 18px;border-top-left-radius:4px;overflow:visible}
.case::before{content:attr(data-year);position:absolute;top:-14px;left:-1px;font:600 .74rem var(--mono);padding:3px 14px 4px;border-radius:8px 8px 0 0;
  background:color-mix(in srgb,var(--purple) 35%,var(--surface));color:var(--text);border:1px solid var(--glass-border);border-bottom:0}
.case h3{margin:0 0 4px;font:700 1.02rem/1.35 var(--serif);padding-right:64px}
.case .cite{font:500 .78rem var(--mono);color:var(--muted);margin:0 0 10px}
.case p{margin:0 0 8px;font-size:.9rem}
.case .lbl{font:600 .7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--green-2);display:block}
.stamp{position:absolute;top:14px;right:12px;font:700 .72rem var(--mono);letter-spacing:.12em;color:#DC2626;border:2px solid #DC2626;border-radius:6px;padding:3px 7px;transform:rotate(-12deg);opacity:.85}
[data-theme="dark"] .stamp{color:#F87171;border-color:#F87171}
.js .case.reveal .stamp{opacity:0;transform:rotate(-12deg) scale(2.2)}
.js .case.reveal.in .stamp{animation:stamp .45s cubic-bezier(.3,1.5,.5,1) .35s both}
@keyframes stamp{0%{opacity:0;transform:rotate(-12deg) scale(2.2)}100%{opacity:.85;transform:rotate(-12deg) scale(1)}}

/* FAQ + glossary */
.lang{display:inline-flex;gap:6px;align-items:center}
.faq{display:grid;gap:10px}
.faq details{padding:0}
.faq summary{list-style:none;cursor:pointer;padding:16px 50px 16px 18px;font:600 1rem/1.4 var(--font-head);position:relative;border-radius:18px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:18px;top:50%;transform:translateY(-50%);font:400 1.4rem var(--mono);color:var(--purple-2);transition:transform .25s var(--ease)}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq .ans{padding:0 18px 16px}
.faq .ans p{margin:0 0 10px;font-size:.95rem;white-space:pre-line}
.refs{display:flex;flex-wrap:wrap;gap:6px}
.refs .tag{font-size:.7rem}
.gl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin:0}
.gl-item{padding:16px 18px}
.gl-item dt{font:700 1rem var(--serif);margin-bottom:4px}
.gl-item dd{margin:0;font-size:.9rem}
.gl-item .tag{margin-top:8px}

/* downloads */
.dl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.dl-grid .card{display:flex;flex-direction:column;gap:10px}
.dl-grid h3{margin:0;font:700 1.05rem var(--serif)}
.dl-grid p{margin:0;font-size:.9rem}
.dl-opts{display:flex;flex-direction:column;gap:10px;margin-top:auto}
.dl-opt{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--glass-border);border-radius:12px;background:rgba(124,58,237,.06)}
.dl-opt-2{background:rgba(34,197,94,.06)}
.dl-tag{font:600 .7rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.dl-opt .btn{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;max-width:100%;white-space:normal;text-align:left;line-height:1.25}
.dl-opt .btn svg{flex:none}
.dl-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.dl-dark{font:600 .8rem var(--mono);color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.dl-dark:hover{color:var(--text)}
.dl-grid .dl-note{font-size:.78rem;color:var(--muted)}
.soon{display:inline-block;font:600 .78rem var(--mono);color:var(--muted);border:1px dashed var(--glass-border);border-radius:10px;padding:8px 12px;align-self:flex-start}

/* light mode: parchment and legal pad */
[data-theme="light"] .law-page .card,[data-theme="light"] .law-page .tbl-wrap{
  background:linear-gradient(90deg,transparent 30px,rgba(220,38,38,.22) 30px,rgba(220,38,38,.22) 31px,transparent 31px),
    repeating-linear-gradient(180deg,transparent 0 27px,rgba(59,130,246,.10) 27px 28px),
    radial-gradient(120% 90% at 0 0,#FFFBEF,#FBF3DE 60%,#F6EACB);
  border-color:#E7D7AE;box-shadow:0 10px 28px -18px rgba(120,80,20,.35),inset 0 1px 0 rgba(255,255,255,.7)}
[data-theme="light"] .law-page .tbl-wrap{background:radial-gradient(120% 90% at 0 0,#FFFBEF,#FBF3DE 60%,#F6EACB)}
[data-theme="light"] .law-page .card .muted,[data-theme="light"] .law-page .vnote,[data-theme="light"] .law-page .cite{color:#4A3F2A}
[data-theme="light"] .law-page .faq summary::after{color:var(--purple)}
[data-theme="light"] .law-page .case::before{background:#EBDDB8;border-color:#E7D7AE}
[data-theme="light"] .tl li::before{background:#FBF3DE}

@media (max-width:900px){
  .law-hero-grid{grid-template-columns:1fr}
  .court{max-width:300px;order:-1}
}
@media (max-width:560px){
  .law-cards{grid-template-columns:1fr}
  .p-grid{grid-template-columns:1fr}
  .page-hero,.law-hero{padding-top:96px}
  .court{max-width:230px}
}
@media (prefers-reduced-motion:reduce){
  .court .beam,.court .pan-l,.court .pan-r,.js .law-page.go .court .gavel,.js .law-page.go .court .ripple,.reveal.in .tap .g,.reveal.in .tap .rp,.js .case.reveal.in .stamp{animation:none!important}
  .js .law-hero h1,.js .law-page.go .law-hero h1{opacity:1;transform:none;animation:none}
  .js .law-page .ink path,.ink path{stroke-dashoffset:0!important;animation:none!important}
  .ink .nib{display:none}
  .js .case.reveal .stamp{opacity:.85;transform:rotate(-12deg)}
  .fav,.faq summary::after{transition:none}
}
.lib-sec{padding-top:10px}
.dp-status{margin-top:14px;font-size:.9rem}
.helpline-card{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.helpline-card p{margin:0;max-width:560px}
.lang{margin-bottom:16px}
/* How to use safely (use-case cards) */
.uc-levels{margin-bottom:16px}
.uc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.uc{display:flex;flex-direction:column;gap:10px;padding:20px}
.uc h3{margin:0;font:600 1.05rem/1.3 var(--font-head)}
.uc .meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.uc p{margin:0;font-size:.9rem}
.uc ol{margin:0;padding-left:20px;font-size:.9rem;display:grid;gap:4px}
.uc .safe{display:flex;gap:8px;font-size:.85rem;padding:10px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--green-2) 40%,transparent);background:color-mix(in srgb,var(--green-2) 8%,transparent)}
.uc .safe b{color:var(--green-2)}
[data-theme="light"] .uc .safe b{color:#166534}
.uc .btn{align-self:flex-start;margin-top:auto}
.lvl{font:600 .68rem var(--mono);text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:999px;border:1px solid}
.lvl.beginner{color:#4ADE80;border-color:rgba(74,222,128,.5);background:rgba(74,222,128,.08)}
.lvl.mid{color:#FBBF24;border-color:rgba(251,191,36,.5);background:rgba(251,191,36,.08)}
.lvl.expert{color:#F87171;border-color:rgba(248,113,113,.5);background:rgba(248,113,113,.08)}
[data-theme="light"] .lvl.beginner{color:#166534;border-color:#16653480}
[data-theme="light"] .lvl.mid{color:#92400E;border-color:#92400E80}
[data-theme="light"] .lvl.expert{color:#B91C1C;border-color:#B91C1C80}
.uc[hidden],.law-page tr[hidden],.gl-item[hidden]{display:none}
.dp-intro{margin:0 0 14px;font-size:.92rem;max-width:760px}
.case .court-name{font-size:.84rem;margin-bottom:10px}
.case-links{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 0!important}
.cite .verify{text-transform:none;letter-spacing:0}
/* fact-check: "being verified" (dashed) vs our own "verify" (solid) */
.verify.pending{border-style:dashed;text-transform:none;letter-spacing:0}
.src-list{font-size:.82rem;margin:.55rem 0 0;line-height:1.7}
.src-list .src{white-space:normal}

/* History of Indian Cyber Law: animated vertical timeline (line draws, entries slide in; parchment in day mode) */
.tl-hist{padding-left:34px}
.tl-hist::before{left:12px;width:3px;border-radius:3px;transform-origin:top;transform:scaleY(1)}
.js .tl-hist.reveal{opacity:1;transform:none;filter:none}
.js .tl-hist.reveal::before{transform:scaleY(0);transition:transform 1.6s var(--ease,ease)}
.js .tl-hist.reveal.in::before{transform:scaleY(1)}
.tl-hist li{margin-bottom:18px}
.tl-hist li::before{left:-29px;top:20px;width:14px;height:14px;box-shadow:0 0 0 4px color-mix(in srgb,var(--purple) 22%,transparent)}
.js .tl-hist li.reveal{transform:translate3d(-18px,0,0);filter:none}
.js .tl-hist li.reveal.in{transform:none}
.js .tl-hist li.reveal.in::before{animation:tl-pop .5s cubic-bezier(.3,1.6,.5,1) .15s both}
@keyframes tl-pop{from{transform:scale(0)}to{transform:scale(1)}}
.tl-year{display:inline-block;font:700 .8rem var(--mono);color:var(--purple-2);margin:0 0 6px;letter-spacing:.04em}
.tl-hist .why{font-size:.9rem;color:var(--muted)}
.tl-hist .why strong{color:var(--text);font-weight:600}
.tl-hist .vnote.fc{font-style:italic}
@media (min-width:900px){
  .tl-hist{padding-left:0}
  .tl-hist::before{left:50%;margin-left:-1.5px}
  .tl-hist li{width:calc(50% - 30px)}
  .tl-hist li.l{margin-right:auto}
  .tl-hist li.r{margin-left:auto}
  .tl-hist li.l::before{left:auto;right:-38px}
  .tl-hist li.r::before{left:-38px}
  .tl-hist li.l .tl-year{display:block;text-align:right}
  .js .tl-hist li.l.reveal{transform:translate3d(-26px,0,0)}
  .js .tl-hist li.r.reveal{transform:translate3d(26px,0,0)}
  .js .tl-hist li.reveal.in{transform:none}
  .tl-hist li + li{margin-top:-28px}
}
[data-theme="light"] .law-page .tl-hist .card{
  background:radial-gradient(140% 100% at 0 0,#FFF9E8,#F7EBCB 55%,#EFDDB0);
  border-color:#D9C08A;box-shadow:0 12px 26px -18px rgba(110,70,20,.45),inset 0 0 22px rgba(160,110,40,.12)}
[data-theme="light"] .law-page .tl-hist .card time{color:#7A4A12}
[data-theme="light"] .law-page .tl-hist .why,[data-theme="light"] .law-page .tl-hist .why strong{color:#3E321C}
[data-theme="light"] .tl-year{color:#6B3FA0}
[data-theme="light"] .tl-hist::before{background:linear-gradient(#8B5A2B,#C89B4A)}
@media (prefers-reduced-motion:reduce){
  .js .tl-hist.reveal::before{transform:none;transition:none}
  .js .tl-hist li.reveal,.js .tl-hist li.l.reveal,.js .tl-hist li.r.reveal{transform:none;opacity:1;transition:none}
  .js .tl-hist li.reveal.in::before{animation:none}
}

/* Where to File: expandable forum cards */
.file-list{display:grid;gap:12px}
.file-card{padding:0}
.file-card summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:16px 50px 16px 18px;position:relative;border-radius:18px;font:600 1rem/1.4 var(--font-head)}
.file-card summary::-webkit-details-marker{display:none}
.file-card summary::after{content:"+";position:absolute;right:18px;top:50%;transform:translateY(-50%);font:400 1.4rem var(--mono);color:var(--purple-2);transition:transform .25s var(--ease)}
.file-card[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.file-card summary:focus-visible{outline:2px solid var(--purple-2);outline-offset:2px}
.file-card .fn{font:700 .85rem var(--mono);color:var(--green-2)}
.file-card .ft{flex:1 1 260px;font-family:var(--serif)}
.file-card .start{font:600 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;padding:3px 8px;border-radius:999px;color:#fff;background:#7C3AED}
.file-card.first{border-color:color-mix(in srgb,var(--purple-2) 55%,transparent)}
.file-body{padding:0 18px 16px}
.file-body dl{margin:0;display:grid;grid-template-columns:170px 1fr;gap:10px 18px}
.file-body dt{font:600 .82rem var(--mono);color:var(--purple-2);padding-top:2px}
.file-body dd{margin:0;font-size:.92rem;line-height:1.55}
.file-body ul{margin:0;padding-left:18px}
.file-body li{margin-bottom:4px}
.file-note{margin-top:14px}
[data-theme="light"] .law-page .file-card summary::after,[data-theme="light"] .file-body dt{color:#5B21B6}
[data-theme="light"] .file-card .fn{color:#166534}
@media (max-width:640px){.file-body dl{grid-template-columns:1fr;gap:4px}.file-body dd{margin-bottom:8px}}
@media (prefers-reduced-motion:reduce){.file-card summary::after{transition:none}}

/* ---------- 404 ---------- */
.nf{min-height:calc(100vh - 240px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:14px;padding-top:110px;padding-bottom:60px;max-width:760px}
.nf h1{font-size:clamp(2rem,6vw,3.4rem);line-height:1.08;margin:0}
.nf .lead{font-size:1.08rem;max-width:56ch;margin:0}
.nf-term{padding:16px 18px;font-size:.92rem;width:min(100%,460px)}
.nf-term p{margin:2px 0;overflow-wrap:anywhere}
.nf-term .g{color:var(--green)}
.nf-term .r{color:var(--danger)}
.nf-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.nf-links{display:flex;flex-wrap:wrap;gap:8px 18px;margin:6px 0 0;padding:0;list-style:none}

/* cyber law: sticky section bar, roomier sections and folded long lists */
html:has(.law-toc){scroll-padding-top:122px}
.law-toc{position:sticky;top:60px;z-index:40;padding:10px 0;border-block:1px solid transparent;transition:background-color .3s,border-color .3s,box-shadow .3s}
.law-toc.stuck{background:var(--glass-strong);border-bottom-color:var(--glass-border);box-shadow:0 10px 30px -22px rgba(0,0,0,.6);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(150%);backdrop-filter:blur(var(--blur)) saturate(150%)}
.law-toc-in{display:flex;align-items:center;gap:12px}
.law-toc-label{flex:none;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.law-toc-scroll{flex:1;min-width:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:2px;scroll-padding-inline:12px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 24px),transparent)}
.law-toc-scroll::-webkit-scrollbar{display:none}
.law-toc .chip{flex:none;white-space:nowrap;text-decoration:none;background:var(--glass-soft)}
.law-toc .chip.on{color:var(--text);background:color-mix(in srgb,var(--purple) 22%,var(--surface));border-color:var(--purple)}
.law-page .section{padding-block:clamp(64px,9vw,104px)}
.law-page .section-head{margin-bottom:28px}
.law-page .section-head .lead{max-width:62ch}
.fold-x{display:none!important}
.folded:not(.tbl-wrap){-webkit-mask-image:linear-gradient(#000 calc(100% - 80px),rgba(0,0,0,.25));mask-image:linear-gradient(#000 calc(100% - 80px),rgba(0,0,0,.25))}
.fold-btn{display:flex;margin:18px auto 0;border-color:var(--glass-border);background:var(--glass-soft)}
.fold-btn[hidden]{display:none}
.fold-btn[aria-expanded="false"]::after{content:"";width:8px;height:8px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-2px) rotate(45deg);margin-left:4px}
@media (max-width:640px){.law-toc-label{display:none}.law-toc{padding:8px 0}}

/* quality audit P1.2: readable prompt placeholders in light theme */
[data-theme="light"] .code-box pre .ph{color:#5B21B6}
/* quality audit P1.7: reserve space for JS-rendered grids and filter chips so the page does not jump (CLS) */
#p-grid:empty,#c-grid:empty{min-height:80vh}
#c-os,#c-cat,#p-cats{min-height:38px}

/* ---------- about.html ---------- */
.about-page .ab-hero{display:grid;grid-template-columns:220px 1fr;gap:44px;align-items:center}
.about-page .ab-avatar{width:200px;margin:0;aspect-ratio:3/4;border-radius:28px;background:color-mix(in srgb,var(--purple) 14%,var(--surface))}
.about-page .ab-avatar .av-ring{border-radius:32px;animation:none}
.about-page .ab-avatar picture,.about-page .ab-avatar img{border-radius:24px;aspect-ratio:3/4;height:auto}
.about-page .ab-book{margin-top:8px}
.about-page .ab-sub{font:600 clamp(1.05rem,2.2vw,1.3rem)/1.35 var(--font-head);color:var(--green);margin:0 0 4px}
.about-page .ab-hero .lead{margin:14px 0 22px}
.about-page .ab-cta{display:flex;flex-wrap:wrap;gap:10px}
.about-page .ab-loc{margin-top:14px}
.about-page .ab-sec{padding:clamp(36px,6vw,64px) 0}
.about-page .ab-sec h2{font:700 clamp(1.5rem,3.2vw,2.1rem)/1.2 var(--font-head);margin:0 0 18px}
.about-page .ab-narrow > *{max-width:820px}
.about-page .ab-narrow > p{color:var(--muted);font-size:1.02rem;line-height:1.7}
.about-page .ab-grid3{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr))}
.about-page .ab-card h3{margin:.1em 0 .6em}
.about-page .ab-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.about-page .ab-list .tag{margin-left:4px;vertical-align:middle}
.about-page .law h2{font-size:1.35rem;margin-bottom:.4em}
.about-page .ab-links{max-width:560px}
@media (max-width:720px){
  .about-page .ab-hero{grid-template-columns:1fr;gap:20px;text-align:left}
  .about-page .ab-avatar{width:140px}
  .about-page .ab-book{gap:18px}
  .about-page .ab-links a{flex-direction:column;gap:2px}
}
