/* CRAZY Code v2 共通の枠。見本そのもののスタイルは各ページの template の中にある */
:root{--ink:#101613;--paper:#F2F4F0;--card:#FCFDFB;--sub:#4A554E;--lime:#DFFF3E;--red:#E23D28;--deep:#C52D1B;--stage:#0D110F}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);background-image:linear-gradient(rgba(16,60,40,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(16,60,40,.05) 1px,transparent 1px);background-size:28px 28px;color:var(--ink);font-family:'Noto Sans JP',system-ui,sans-serif;overflow-x:hidden}
a{color:inherit}
:focus-visible{outline:3px solid var(--lime);outline-offset:2px;box-shadow:0 0 0 5px var(--ink)}
[hidden]{display:none!important}
.mono{font-family:'IBM Plex Mono',monospace}

/* ヘッダー */
.hd{position:sticky;top:0;z-index:50;background:rgba(252,253,251,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1.5px solid var(--ink)}
.hd-in{max-width:1180px;margin:0 auto;padding:12px 28px;display:flex;align-items:center;gap:14px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;text-decoration:none;white-space:nowrap}
.brand-mark{width:30px;height:30px;border-radius:7px;background:var(--ink);display:grid;place-items:center;flex:none}
.badge{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;background:var(--lime);padding:3px 7px;border-radius:3px}
.hd-nav{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:13px;font-weight:500}
.hd-nav a{text-decoration:none;white-space:nowrap}
.hd-nav a:hover{color:var(--red)}
.snd{display:inline-flex;align-items:center;gap:8px;cursor:pointer;border:1.5px solid var(--ink);background:var(--card);border-radius:6px;padding:7px 12px;font:700 12px 'Noto Sans JP',system-ui,sans-serif;color:var(--ink);white-space:nowrap}
.snd i{width:8px;height:8px;border-radius:50%;background:#B9C2BC}
.snd[aria-pressed="true"]{background:var(--ink);color:var(--lime)}
.snd[aria-pressed="true"] i{background:var(--lime);box-shadow:0 0 8px var(--lime)}

/* 区画ページの見出し */
.hero{max-width:1180px;margin:0 auto;padding:46px 28px 30px;display:flex;align-items:flex-end;justify-content:space-between;gap:28px;flex-wrap:wrap}
.hero-main{flex:1 1 560px;min-width:0}
.crumb{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--sub);margin-bottom:12px}
.crumb a{text-decoration:none}
.crumb a:hover{color:var(--red)}
.level{display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:700;background:var(--deep);color:#fff;padding:5px 12px;border-radius:4px;margin-bottom:14px}
.hero h1{font-size:clamp(32px,4.6vw,54px);line-height:1.2;margin:0 0 14px}
.lead{font-size:15px;line-height:2;color:var(--sub);max-width:640px;margin:0}
.stats{display:flex;gap:28px;padding:18px 24px;background:var(--card);border:1.5px solid var(--ink);border-radius:10px;box-shadow:5px 5px 0 rgba(16,22,19,.1)}
.stats b{display:block;font-size:26px;line-height:1.2}
.stats span{font-size:11px;font-weight:500;color:var(--sub)}

/* 見本カード */
.specs{max-width:1180px;margin:0 auto;padding:8px 28px 56px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.spec{background:var(--card);border:1.5px solid var(--ink);border-radius:14px;overflow:hidden;box-shadow:5px 5px 0 rgba(16,22,19,.1);display:flex;flex-direction:column;min-width:0}
.spec.wide{grid-column:1/-1}
.spec{scroll-margin-top:84px}
.spec:target{outline:3px solid var(--lime);outline-offset:3px}
.spec-hd{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1.5px solid var(--ink)}
.spec-no{font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:700;color:var(--sub);flex:none}
.spec-name{font-weight:700;font-size:16px;min-width:0}
.crazy{margin-left:auto;font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;background:var(--red);color:#fff;padding:3px 8px;border-radius:3px;white-space:nowrap}
.crazy.mid{background:var(--lime);color:var(--ink)}
.pc{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;border:1.5px solid var(--ink);padding:2px 7px;border-radius:3px;white-space:nowrap}
.stage{position:relative;flex:1;min-height:340px;display:grid;place-items:center;padding:34px 20px;overflow:hidden;background-color:var(--stage);background-image:radial-gradient(ellipse at center,rgba(223,255,62,.07),transparent 65%),linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:auto,24px 24px,24px 24px}
.spec.wide .stage{min-height:420px}
.stage.fill{padding:0;display:block}
.stage.fill>:not(style):not(script){position:absolute;inset:0;width:auto;min-height:0;border-radius:0}
.spec-ft{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1.5px solid var(--ink);flex-wrap:wrap}
.spec-desc{flex:1 1 260px;font-size:12.5px;line-height:1.8;color:var(--sub);font-weight:500;margin:0}
.tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.tag{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:600;border:1px solid rgba(16,22,19,.28);border-radius:3px;padding:2px 6px;color:var(--sub)}
.acts{display:flex;gap:8px;margin-left:auto}
.act{cursor:pointer;border:1.5px solid var(--ink);background:transparent;border-radius:6px;padding:8px 13px;font:700 12px 'Noto Sans JP',system-ui,sans-serif;color:var(--ink);white-space:nowrap}
.act.dash{border-style:dashed}
.act:hover{background:var(--lime);border-style:solid}
.act.done{background:var(--lime)}
.tips{display:none}

/* コードと使い方のダイアログ */
dialog.code{width:min(880px,calc(100vw - 32px));height:min(82vh,780px);max-height:none;padding:0;border:1.5px solid var(--ink);border-radius:12px;background:var(--card);color:var(--ink);overflow:hidden}
dialog.code[open]{display:flex;flex-direction:column}
dialog.code::backdrop{background:rgba(16,22,19,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
@keyframes dlgback-in{from{opacity:0}to{opacity:1}}
@keyframes dlgback-out{from{opacity:1}to{opacity:0}}
dialog.code[open]::backdrop{animation:dlgback-in .22s ease-out}
dialog.code.is-closing::backdrop{animation:dlgback-out .15s ease-in forwards}
@media(prefers-reduced-motion:reduce){dialog.code[open]::backdrop,dialog.code.is-closing::backdrop{animation:none}}
.dlg-hd{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1.5px solid var(--ink);flex-wrap:wrap}
.dlg-hd b{flex:1 1 200px;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dlg-tabs{display:flex;gap:0;border:1.5px solid var(--ink);border-radius:6px;overflow:hidden}
.dlg-tabs button{cursor:pointer;border:0;background:transparent;padding:7px 12px;font:700 12px 'Noto Sans JP',system-ui,sans-serif;color:var(--ink)}
.dlg-tabs button+button{border-left:1.5px solid var(--ink)}
.dlg-tabs button[aria-selected="true"]{background:var(--ink);color:var(--lime)}
.dlg-panel{flex:1;min-height:0;overflow:auto}
dialog.code pre{margin:0;padding:18px;min-height:100%;background:#0D110F;color:#D7E6C6;font:12px/1.7 'IBM Plex Mono',monospace;tab-size:2;white-space:pre}
.tips-body{padding:20px 24px 26px;font-size:13.5px;line-height:2;color:var(--sub)}
.tips-body h4{margin:18px 0 4px;font-size:13.5px;color:var(--ink);display:flex;align-items:center;gap:8px}
.tips-body h4::before{content:'';width:9px;height:9px;background:var(--lime);border:1.5px solid var(--ink);border-radius:2px;flex:none}
.tips-body h4:first-child{margin-top:0}
.tips-body p{margin:0 0 6px}
.tips-body ul,.tips-body ol{margin:0 0 6px;padding-left:20px}
.tips-body b{color:var(--ink)}
.tips-body code{font-family:'IBM Plex Mono',monospace;font-size:12px;background:var(--ink);color:#C9DDB4;padding:2px 6px;border-radius:4px;word-break:break-all}
.tips-body .warn{border:1.5px dashed var(--red);border-radius:8px;padding:8px 14px;background:#fff;font-size:12.5px}

/* 前後の区画 */
.area-nav{max-width:1180px;margin:0 auto 64px;padding:0 28px;display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:stretch}
.area-nav a{display:flex;flex-direction:column;gap:4px;padding:16px 20px;border:1.5px solid var(--ink);border-radius:12px;background:var(--card);text-decoration:none;box-shadow:5px 5px 0 rgba(16,22,19,.1)}
.area-nav a:hover{background:var(--lime)}
.area-nav small{font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:700;color:var(--sub)}
.area-nav b{font-size:15px}
.area-nav .next{text-align:right}
.area-nav .all{justify-content:center;align-items:center;text-align:center}

/* フッター */
.foot{border-top:2px solid var(--ink);background:var(--card)}
.foot-in{max-width:1180px;margin:0 auto;padding:30px 28px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px}
.foot-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px}
.foot-brand small{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--sub)}
.foot-links{display:flex;gap:18px;font-size:12.5px;font-weight:500;color:var(--sub);flex-wrap:wrap}
.foot-links a{text-decoration:none}
.foot-links a:hover{color:var(--red)}

@media(max-width:760px){
  .hd-in{padding:10px 16px;flex-wrap:wrap;gap:8px 12px}
  .hd-nav{gap:12px;font-size:12px}
  .hero{padding:30px 16px 22px}
  .stats{gap:20px;padding:14px 18px}
  .specs{grid-template-columns:minmax(0,1fr);padding:4px 16px 40px;gap:18px}
  .stage{min-height:300px}
  .spec.wide .stage{min-height:360px}
  .acts{margin-left:0}
  .area-nav{grid-template-columns:1fr 1fr;padding:0 16px}
  .area-nav .all{grid-column:1/-1;grid-row:2}
  .foot-in{padding:24px 16px}
}
