:root{
  --bg:#F5EFE0; --card:#FBF9F4; --paper:#FFFDF8; --ink:#1A2B3C; --ink-soft:#7C8A82; --line:#1A2B3C;
  --acc:#3B6FE8; --acc-deep:#2F59BE; --acc-wash:#E7EEFC;
  --arc:#F0851F; --arc-wash:#FDEEDC;
  --ok:#06D6A0; --ok-deep:#059B78; --ok-wash:#E1F8F1;
  --wrong:#E76F51; --wrong-wash:#FBE7E0; --gold:#FFC857; --shadow:rgba(26,43,60,.08);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--bg);color:var(--ink);font-family:"Atkinson Hyperlegible","Klee One","Zen Maru Gothic","Hiragino Sans","Yu Gothic",Meiryo,sans-serif;-webkit-font-smoothing:antialiased;line-height:1.6;}
a{color:inherit;}
button{font-family:inherit;color:inherit;}

/* header */
.top{max-width:1120px;margin:0 auto;padding:18px 20px 6px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;}
.brand .logo{width:38px;height:38px;border-radius:12px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:20px;}
.brand h1{font-family:"RocknRoll One","Klee One",sans-serif;font-size:26px;margin:0;font-weight:400;letter-spacing:.01em;}
.top nav{display:flex;gap:8px;}
.top nav a{border:2px solid var(--line);border-radius:999px;background:var(--card);padding:8px 14px;font-size:14px;font-weight:700;text-decoration:none;}
.top nav a.on{background:var(--ink);color:#fff;}

main{max-width:1120px;margin:0 auto;padding:10px 20px 40px;}
.card{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:16px;}

/* home */
.hero{padding:6px 2px 10px;}
.hero .lead{font-size:15px;margin:0 0 12px;color:var(--ink);}
.hero-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.pill{border:2px solid var(--line);border-radius:999px;background:var(--card);padding:7px 14px;font-size:13px;font-weight:700;text-decoration:none;}
.pill.link{background:var(--acc);border-color:var(--acc);color:#fff;}
.group{margin-top:22px;}
.group-head h2{font-size:18px;margin:0 0 2px;}
.group-head p{margin:0 0 10px;font-size:13px;color:var(--ink-soft);}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;}
.pcard{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;border:2px solid var(--line);border-radius:14px;background:var(--card);padding:12px 14px;text-decoration:none;transition:transform .1s;}
.pcard:hover{transform:translateY(-2px);}
.pcard .no{width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;}
.pcard .ttl{font-weight:700;font-size:15px;}
.pcard .chk{font-size:12px;font-weight:800;color:var(--ok-deep);}
.pcard.done{background:var(--ok-wash);}
.pcard.done .no{background:var(--ok-deep);}
.howto{margin-top:26px;}
.howto h2{font-size:17px;margin:0 0 8px;}
.howto ul{margin:0;padding-left:20px;font-size:14px;}
.howto li{margin:4px 0;}

/* work layout */
.work{display:flex;flex-direction:column;gap:14px;}
.sidecol{display:contents;}
.boardcol{display:flex;flex-direction:column;gap:14px;order:2;}
.stmt{order:1;}
.judge{order:3;}
@media (min-width:860px){
  .work{display:grid;grid-template-columns:340px 1fr;gap:18px;align-items:start;}
  .sidecol{display:flex;flex-direction:column;gap:14px;position:sticky;top:12px;}
  .boardcol{order:0;}
}
.stmt-head .grp{font-size:12px;font-weight:700;color:var(--ink-soft);letter-spacing:.06em;}
.stmt-head h2{font-size:19px;margin:2px 0 8px;}
.stmt-text{font-size:16px;margin:0 0 12px;line-height:1.7;}
.stmt-actions{display:flex;gap:8px;flex-wrap:wrap;}
.chipbtn{border:2px solid var(--line);border-radius:999px;background:var(--card);padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;}
.chipbtn:disabled{opacity:.45;cursor:default;}
.hints{margin:10px 0 0;padding-left:20px;font-size:14px;}
.hints li{margin:6px 0;background:var(--acc-wash);border-radius:10px;padding:6px 10px;list-style-position:inside;}
.demo-box{margin-top:12px;border:2px dashed rgba(26,43,60,.35);border-radius:12px;padding:10px 12px;background:rgba(255,255,255,.5);}
.demo-head{font-weight:800;font-size:13px;color:var(--ink-soft);margin-bottom:4px;}
.demo-steps{margin:0;padding-left:20px;font-size:14px;}
.demo-steps li{margin:4px 0;color:var(--ink-soft);}
.demo-steps li.cur{color:var(--ink);font-weight:700;}
.demo-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;}

/* board */
.board{padding:8px;position:relative;background:var(--paper);}
.board svg{display:block;width:min(100%, 68vh);margin:0 auto;height:auto;aspect-ratio:1/1;touch-action:none;user-select:none;-webkit-user-select:none;cursor:crosshair;border-radius:10px;background:var(--paper);}
.status{font-size:13px;color:var(--ink-soft);padding:8px 6px 2px;min-height:30px;}
.toast{position:absolute;left:50%;bottom:52px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 14px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap;box-shadow:0 8px 24px var(--shadow);}

/* svg styles */
.ln-given{stroke:var(--ink);stroke-width:3.2;stroke-linecap:round;}
.cir-given{stroke:var(--ink);stroke-width:3.2;fill:none;}
.ln-user{stroke:var(--acc);stroke-width:2.6;stroke-linecap:round;}
.arc-user{stroke:var(--arc);stroke-width:2.6;fill:none;stroke-linecap:round;}
.fresh{animation:pop .5s ease-out;}
@keyframes pop{from{opacity:0;}to{opacity:1;}}
.x-hint{fill:#fff;stroke:rgba(26,43,60,.38);stroke-width:1.6;}
.pt-given{fill:var(--ink);stroke:#fff;stroke-width:2.2;}
.pt-x{fill:var(--acc);stroke:#fff;stroke-width:2.2;}
.pt-on{fill:#fff;stroke:var(--acc);stroke-width:3;}
.pt-free{fill:#fff;stroke:var(--ink-soft);stroke-width:3;stroke-dasharray:3 3;}
.lbl{font-family:"Klee One","Zen Maru Gothic",serif;font-size:30px;fill:var(--ink);font-weight:600;pointer-events:none;}
.lbl-line{font-style:italic;}
.snap{fill:none;stroke-width:2.5;}
.snap-point{stroke:var(--acc);}
.snap-x{stroke:var(--acc);stroke-dasharray:4 4;}
.snap-on{stroke:var(--ink-soft);stroke-dasharray:4 4;}
.snap-free{stroke:rgba(26,43,60,.3);stroke-dasharray:2 4;}
.snap-fixed{stroke:var(--acc);fill:rgba(59,111,232,.15);}
.ghost{fill:none;stroke:var(--arc);stroke-width:1.5;stroke-dasharray:6 6;opacity:.7;}
.radius{stroke:var(--arc);stroke-width:1.5;stroke-dasharray:4 4;}
.arc-preview{fill:none;stroke:var(--arc);stroke-width:3;opacity:.8;}
.ln-preview{stroke:var(--acc);stroke-width:2;stroke-dasharray:8 6;opacity:.7;}
.needle line{stroke:var(--arc);stroke-width:2.5;}

/* tools */
.toolrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.tool{border:2px solid var(--line);border-radius:14px;background:var(--card);padding:10px 4px;font-size:14px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;}
.tool .ic{font-size:18px;line-height:1;}
.tool.on{background:var(--ink);color:#fff;}
.tool:disabled,.act:disabled,.chip:disabled{opacity:.4;cursor:default;}
.subrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;min-height:38px;margin-top:10px;}
.subrow .note{font-size:13px;color:var(--ink-soft);}
.chip{border:2px solid var(--line);border-radius:999px;background:var(--card);padding:7px 14px;font-size:13px;font-weight:700;cursor:pointer;}
.chip.on{background:var(--acc);border-color:var(--acc);color:#fff;}
.chip.ghost{border-style:dashed;color:var(--ink-soft);}
.actrow{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px;}
.act{border:2px solid var(--line);border-radius:12px;background:var(--card);padding:9px 4px;font-size:13px;font-weight:700;cursor:pointer;}

/* judge */
.btn{display:block;width:100%;border:none;border-radius:16px;background:var(--acc);color:#fff;font-size:17px;font-weight:800;letter-spacing:.04em;padding:16px;cursor:pointer;text-align:center;text-decoration:none;box-shadow:0 6px 0 var(--acc-deep);transition:transform .1s;}
.btn:active{transform:translateY(3px);box-shadow:0 3px 0 var(--acc-deep);}
.btn.small{font-size:15px;padding:12px;margin-top:10px;}
.result{margin-top:12px;border-radius:12px;padding:12px 14px;font-size:14px;}
.result .rhead{font-weight:800;font-size:17px;margin-bottom:4px;}
.result p{margin:0;}
.result.ok{background:var(--ok-wash);border:2px solid var(--ok-deep);}
.result.ok .rhead{color:var(--ok-deep);}
.result.ng{background:var(--wrong-wash);border:2px solid var(--wrong);}
.result.ng .rhead{color:var(--wrong);}
.result.near{background:#FFF4DA;border-color:#D9A62B;}
.result.near .rhead{color:#9C7212;}
.pnav{display:flex;justify-content:space-between;gap:8px;margin-top:14px;font-size:13px;font-weight:700;}
.pnav a{text-decoration:none;color:var(--ink-soft);}

/* footer (ろっく家庭教師ネットワーク) */
.rk-footer{background:var(--card);border-top:1px solid #ECE6D9;padding:26px 20px 22px;color:#1A2B3C;max-width:640px;margin:20px auto 0;}
.rk-net-label{font-size:12px;color:#8A9299;letter-spacing:.04em;margin-bottom:11px;text-align:center;}
.rk-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:22px;}
.rk-chip{display:inline-block;padding:8px 16px;border-radius:999px;background:#fff;border:1.5px solid #E3DDD0;color:#1A2B3C;font-size:14px;font-weight:600;text-decoration:none;}
.rk-chip.me{background:var(--acc);border-color:var(--acc);color:#fff;}
.rk-cta{background:#fff;border:1px solid #EFE9DC;border-radius:16px;padding:20px 18px;text-align:center;}
.rk-cta-head{font-size:16px;font-weight:700;margin-bottom:8px;}
.rk-cta-sub{font-size:13px;line-height:1.85;color:#5C6B73;margin:0 0 16px;}
.rk-cta-btn{display:block;background:linear-gradient(135deg,#c0392b,#e05242);color:#fff;font-weight:700;font-size:15.5px;text-decoration:none;padding:14px;border-radius:12px;}
.rk-links{display:flex;flex-direction:column;gap:2px;margin:18px 0 14px;}
.rk-links a{display:flex;align-items:center;gap:9px;padding:11px 6px;color:#1A2B3C;text-decoration:none;font-size:14px;border-bottom:1px solid #F0EBDF;}
.rk-links a .ar{margin-left:auto;color:#B7AE9C;}
.rk-credit{text-align:center;font-size:11.5px;color:#A9A192;margin-top:6px;}

@media (max-width:480px){
  .brand h1{font-size:22px;}
  .top{padding:14px 14px 4px;}
  main{padding:8px 12px 30px;}
  .card{padding:12px;border-radius:14px;}
  .board{padding:5px;}
  .tool{font-size:13px;}
  .lbl{font-size:34px;}
}
