:root{--card-gap:24px;--card-cols:3;--card-w:calc((var(--pg-col) - (var(--card-cols) - 1) * var(--card-gap)) / var(--card-cols))}.game-card{border-radius:var(--radius);border:1px solid var(--line);text-align:center;background:var(--surface);box-shadow:var(--shadow);flex-direction:column;align-items:center;padding:16px 16px 18px;transition:transform .2s,box-shadow .2s;display:flex;position:relative}.game-card:hover{transform:translateY(-5px)}.game-play-link{width:100%;display:block;position:relative}.game-illus{aspect-ratio:4/3;background:var(--bg);border-radius:16px;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.game-illus img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.game-play-link:hover .game-illus img{transform:scale(1.05)}.game-play-hint{opacity:0;background:#24404f00;border-radius:16px;justify-content:center;align-items:center;transition:opacity .2s,background .2s;display:flex;position:absolute;inset:0}.game-play-link:hover .game-play-hint{opacity:1;background:#24404f52}.game-play-hint span{color:var(--blue-dp);font-size:var(--fs-1);letter-spacing:.02em;background:#fff;border-radius:20px;padding:7px 18px;font-weight:700}.ext-badge{width:24px;height:24px;font-size:var(--fs-1);color:var(--ink);z-index:1;background:#ffffffe6;border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;top:10px;right:10px}.game-title-link{color:inherit;margin-top:14px;text-decoration:none;display:inline-block}.game-title{font-size:var(--fs-2);letter-spacing:.01em;align-items:center;gap:6px;font-weight:700;display:inline-flex}.game-title .i-guide{width:18px;height:13px;color:var(--ink);opacity:.55;flex:none;position:relative;top:1.5px}.game-title.is-plain{margin-top:14px}.game-title-link:hover .game-title{text-underline-offset:3px;text-decoration:underline}.game-title-link:hover .i-guide{opacity:.85}.game-title-link:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:4px}.page-content .game-card{width:min(100%, var(--card-w))}@media (width<=639px){.page-content .game-card{width:100%}}.page-content .game-play-link{color:inherit;text-decoration:none}.page-content .game-card .game-title{font-size:var(--fs-2);color:var(--ink);letter-spacing:.01em;border:none;margin:14px 0 0;padding:0;display:inline-flex}.page-content .devlog .cta-lead{font-size:var(--fs-3);color:var(--blue-dp);letter-spacing:.01em;margin:64px 0 22px;font-weight:800;line-height:1.4}.page-content .devlog .cta-lead .cta-arrow{margin-left:.3em;font-weight:700}:root{--bg:#efeae0;--surface:#fff;--ink:#2a2721;--muted:#756b57;--blue:#3e6883;--blue-dp:#24404f;--blue-hi:#6fa0be;--tan:#c67f3e;--tan-dp:#8f5424;--tan-hi:#e8ad64;--line:#ddd3bc;--shadow:0 1px 2px #2820100d, 0 22px 36px -20px #2820104d;--radius:22px;--pg-col:960px;--fs-1:13px;--fs-2:17px;--fs-3:23px;--fs-4:30px;--fs-5:40px}@media (width>=768px){:root{--pg-col:1200px}}@media (width<=560px){:root{--fs-1:12.5px;--fs-2:16px;--fs-3:20px;--fs-4:25px;--fs-5:30px}}html{scrollbar-gutter:stable}*{box-sizing:border-box;margin:0;padding:0}svg{display:block}.icon-defs{width:0;height:0;position:absolute;overflow:hidden}body{background:var(--bg);color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;flex-direction:column;align-items:center;min-height:100vh;font-family:Huninn,PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;display:flex}input,textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}img,svg{-webkit-user-drag:none}header{background:var(--blue);width:100%;padding:44px 0 40px;position:relative}.hero-inner{width:min(92%, var(--pg-col));margin:0 auto}header h1{font-size:var(--fs-4);letter-spacing:-.3px;color:#fff;font-weight:700;line-height:1.25}header h1 a{color:inherit;text-decoration:none}header p{font-size:var(--fs-2);color:#d9e4ea;max-width:400px;margin-top:8px;line-height:1.5}.lang-switch{font-size:var(--fs-1);color:#fff;border:1px solid #fff6;border-radius:20px;padding:4px 10px;text-decoration:none;transition:background .15s;position:absolute;top:16px;right:20px}.lang-switch:hover{background:#ffffff26}header.island-hero{background:linear-gradient(#bfe4f2 0%,#d8ecec 72%,#eef4ea 100%);overflow:hidden}header.island-hero h1{color:#2e3f4a;font-weight:800;font-size:var(--fs-5)}header.island-hero p{color:#3c5266;max-width:32em;font-size:var(--fs-2)}html[lang=en] header.island-hero h1{margin-left:-1.5px}header.island-hero .lang-switch{z-index:3;color:#2e3f4a;right:max(4%, calc(50% - var(--pg-col) / 2));background:#ffffff9e;border-color:#2e3f4a4d}header.island-hero .lang-switch:hover{background:#ffffffd9}.island-hero .sky,.island-hero .scene{top:0;right:max(4%, calc(50% - var(--pg-col) / 2));pointer-events:none;height:100%;position:absolute}.island-hero .sky{z-index:0}.island-hero .scene{z-index:1;-webkit-mask-image:linear-gradient(90deg,#0000 0 38%,#000 52% 100%);mask-image:linear-gradient(90deg,#0000 0 38%,#000 52% 100%)}.island-hero .sky svg,.island-hero .scene svg{width:auto;height:100%;display:block}.island-hero .hero-inner{z-index:2;position:relative}@media (width<=600px){.island-hero .sky,.island-hero .scene{display:none}}footer{text-align:center;width:100%;font-size:var(--fs-1);color:var(--muted);padding:16px}footer a{color:var(--muted);margin:0 8px;text-decoration:none}footer a:hover{text-decoration:underline}.page-content{width:min(92%, var(--pg-col));flex:1;padding:48px 0 72px}.page-content h2{font-size:var(--fs-4);color:var(--blue-dp);margin:36px 0 12px;font-weight:700}.page-content h2:first-of-type{margin-top:0}.page-content h3{font-size:var(--fs-3);color:var(--blue-dp);margin:32px 0 10px;font-weight:700}.page-content h4{font-size:var(--fs-2);margin:20px 0 6px;font-weight:700}.page-content p{font-size:var(--fs-2);margin-bottom:12px;line-height:1.85}.page-content ul{margin:0 0 16px 20px}.page-content li{font-size:var(--fs-2);margin-bottom:6px;line-height:1.85}.page-content a{color:var(--blue);text-underline-offset:2px;text-decoration:underline}.page-content a:hover{color:var(--tan-dp)}.page-content strong{font-weight:700}.last-updated{font-size:var(--fs-1);color:var(--muted);margin-bottom:28px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px 26px}.play-btn{background:var(--tan);color:#fff;font-size:var(--fs-1);white-space:nowrap;border-radius:22px;align-items:center;gap:6px;padding:10px 22px;font-weight:700;text-decoration:none;transition:transform .15s,background .15s;display:inline-flex;box-shadow:0 5px 12px #14100833}.play-btn:hover{background:var(--tan-dp);color:#fff;transform:translateY(-2px)}.page-content .play-btn{color:#fff;text-decoration:none}@media (width<=480px){header{padding:36px 0 32px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.page-content .devlog-layout{--read:720px;--read-solo:880px;grid-template-columns:minmax(0,1fr);display:grid}.page-content :is(.devlog,.devlog-list){max-width:var(--read-solo)}.page-content .devlog-toc{display:none}@media (width>=960px){.page-content .devlog-layout{grid-template-columns:minmax(0, var(--read)) clamp(200px, 22vw, 300px);justify-content:space-between;column-gap:clamp(32px,4vw,72px)}.page-content :is(.devlog,.devlog-list){max-width:none}.page-content .devlog-toc{align-self:start;max-height:calc(100vh - 56px);display:block;position:sticky;top:28px;overflow-y:auto}}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.page-content .devlog-toc-title{font-size:var(--fs-1);letter-spacing:.18em;color:var(--muted);margin-bottom:14px;font-weight:700}.page-content .devlog-toc ol{margin:0;list-style:none}.page-content .devlog-toc a{font-size:var(--fs-1);color:var(--ink);border-left:2px solid #0000;margin-left:-2px;padding:7px 0 7px 14px;line-height:1.5;text-decoration:none;display:block}.page-content .devlog-toc a:hover{color:var(--blue);border-left-color:var(--tan-dp)}.page-content .devlog-toc .lv1>a{font-size:var(--fs-2);color:var(--blue-dp);padding-top:14px;font-weight:700}.page-content .devlog-toc .lv1>a .n{color:var(--tan-dp);margin-right:6px}.page-content .devlog-toc .lv2 a{padding-left:26px}.page-content .devlog-toc a[aria-current=true]{color:var(--blue);border-left-color:var(--tan-dp);font-weight:700}.page-content .crumb{font-size:var(--fs-1);color:var(--muted);margin-bottom:26px}.page-content .crumb a{color:var(--muted);border-bottom:1px solid var(--line);text-decoration:none}.page-content .crumb a:hover{color:var(--tan-dp)}.page-content .crumb span{opacity:.5;margin:0 7px}.page-content .devlog h1{font-size:var(--fs-5);color:var(--blue-dp);letter-spacing:-.6px;font-weight:800;line-height:1.28}.page-content .devlog-meta{font-size:var(--fs-1);color:var(--muted);letter-spacing:.02em;margin-top:18px}.page-content .devlog-head{margin-bottom:34px}.page-content .devlog .lede-hook{border-left:5px solid var(--tan-dp);font-size:var(--fs-3);color:var(--blue-dp);margin:0 0 20px;padding-left:14px;font-weight:700;line-height:1.6}.page-content .devlog p{font-size:var(--fs-2);margin-bottom:26px;line-height:1.8}.page-content .devlog li{font-size:var(--fs-2);line-height:1.8}.page-content .devlog strong{box-shadow:inset 0 -.48em #e8ad6480}.page-content :is(.devlog,.devlog-list) h2{border-bottom:4px solid var(--tan-dp);font-size:var(--fs-4);color:var(--blue-dp);letter-spacing:-.3px;align-items:center;gap:14px;margin:72px 0 38px;padding-bottom:14px;scroll-margin-top:24px;font-weight:800;display:flex}.page-content .devlog h2 .no{color:var(--tan-dp);letter-spacing:0;font-variant-numeric:tabular-nums;flex:none}.page-content .devlog h3{border-left:5px solid var(--tan-dp);font-size:var(--fs-3);color:var(--blue-dp);margin:48px 0 16px;padding-left:14px;scroll-margin-top:24px;font-weight:800;line-height:1.4}.page-content .spec{background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--blue);border-radius:12px;margin:26px 0 30px;padding:22px 26px 24px;box-shadow:0 1px 2px #2820100d,0 16px 28px -22px #28201066}.page-content .spec .k{background:var(--blue);color:#fff;font-size:var(--fs-1);letter-spacing:.16em;border-radius:999px;margin-bottom:14px;padding:4px 12px;font-weight:700;display:inline-block}.page-content .spec p{font-size:var(--fs-2);margin:0;line-height:1.82}.page-content .spec p+p{margin-top:12px}.page-content .devlog blockquote{border-left:8px solid var(--tan-dp);font-size:var(--fs-4);color:var(--blue-dp);margin:44px 0;padding:26px 0 26px 24px;font-weight:800;line-height:1.62}.page-content .devlog code{background:#3e68831a;border-radius:4px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.page-content .devlog figure{margin:38px 0 44px}.page-content .board-shot{width:min(100%,430px);position:relative}.page-content .board-shot picture{display:block}.page-content .board-shot img{border:1px solid var(--line);background:var(--surface);border-radius:14px;width:100%;height:auto;display:block}.page-content .board-shot .anno{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.page-content .board-shot.wide{width:100%}.page-content .board-shot.wide+.board-shot.wide{margin-top:14px}.page-content .devlog figcaption{font-size:var(--fs-2);color:var(--ink);margin-top:16px;line-height:1.8}.page-content .devlog figcaption b{color:var(--blue-dp);margin-bottom:8px;font-weight:800;display:block}.page-content .devlog figcaption .fig-no{color:var(--tan-dp)}.page-content .legend{font-size:var(--fs-1);flex-direction:column;gap:10px;margin-top:16px;display:flex}.page-content .legend div{align-items:center;gap:10px;display:flex}.page-content .legend i{width:26px;height:26px;font-style:normal;font-size:var(--fs-1);color:#fff;border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.page-content .legend i.glyph{background:0 0}.page-content .legend i.glyph svg{width:100%;height:100%;display:block}.page-content .legend i.anno-mark{color:#1b1b1b;background:#fff;border:2px solid #1b1b1b}.page-content .measure-wrap{margin:32px 0 38px;overflow-x:auto}.page-content .measure{border-collapse:collapse;width:100%;font-size:var(--fs-2);line-height:1.7}.page-content .measure caption{text-align:left;font-size:var(--fs-1);color:var(--muted);padding-bottom:12px}.page-content .measure th,.page-content .measure td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:14px 14px 14px 0}.page-content .measure thead th{font-size:var(--fs-1);letter-spacing:.06em;color:var(--blue);border-bottom:2px solid var(--blue);font-weight:800}.page-content .measure td:first-child{width:27%;color:var(--blue-dp);font-weight:700}.page-content .measure tr:last-child td{border-bottom:none}.page-content .measure .pick td{background:#e8ad644d}.page-content .devlog-list>h2:first-child{border-bottom:none;margin-top:0;padding-bottom:0}.page-content .devlog-list>p{font-size:var(--fs-2);margin-bottom:26px;line-height:1.8}.page-content .entry{color:var(--ink);scroll-margin-top:24px;text-decoration:none;display:block}.page-content .entry:hover{color:var(--ink);text-decoration:none}.page-content .entry+.entry{border-top:1px solid var(--line);margin-top:28px;padding-top:28px}.page-content .entry-title{font-size:var(--fs-3);color:var(--blue-dp);margin:0;font-weight:700;line-height:1.55}.page-content .entry:hover .entry-title{text-underline-offset:3px;text-decoration:underline}.page-content .entry-meta{font-size:var(--fs-1);color:var(--muted);margin-top:10px}.page-content .entry-sum{font-size:var(--fs-2);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;margin:12px 0 0;line-height:1.85;display:-webkit-box;overflow:hidden}.page-content .entry-more{font-size:var(--fs-1);color:var(--tan-dp);margin-top:14px;font-weight:700}.page-content .entry:focus-visible{outline:2px solid var(--blue);outline-offset:4px}@media (width<=720px){.page-content .demo{grid-template-columns:minmax(0,1fr)}.page-content .demo-stage{max-width:300px}}@media (width<=560px){.page-content :is(.devlog,.devlog-list) h2{margin-top:56px}.page-content .devlog blockquote{padding-left:20px}.page-content .measure td:first-child{width:auto}}
