@font-face{font-family:Golos Text;font-style:normal;font-weight:400 900;font-display:swap;src:url(/assets/golos-text-latin-CeRm3aSN.woff2) format("woff2")}@font-face{font-family:Miai Pips;font-style:normal;font-weight:400 900;font-display:swap;src:url(data:font/woff2;base64,d09GMgABAAAAAAMEAAoAAAAABUgAAAK4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAATAqDQIJ7ATYCJAMQCw4ABCAFgkcHTBtDBAA+DW+MUfWTILJMQpCwKz3NhbGkpfbWXbw3n4L0wf/GQ88x/HerCBpW8ax9b6DRVrQGGch85uNh1JF/+bN33heQqJJOVElWcfmRAGBqHnCUb7WuxcrQDxAZehoA23KvB1y9UbaMFDdk9hJIe34W/0uf0P5EIPn6n3Pxgia690Hm9JdxTYmZOhrIpdHd87YKsmtQPN1UgqVXWwJq7DXcrr2rgnyOGyhSiKCWBSAWZgEM9wb58a89wTswve6ZKEAjskAjikmgXKmUwxFy0XJxb/A/+GTsIx4RFQKYYqdVoggXeAUUAoK3HTQQYOLk+V4LjvO1QXzth+F8HaPbaMYqV6GpYqjS/9afP7nZt01QlFMgVogKV9BTOpwlwM0HDEx0C5p6XQJti81HpDe82XdKkLhduawkurIxOO65ro3kwC3YeZyH449H+gT6+QT7RZfcqTqxLqteSVGe28tNrb3HWS2Zh9Yk75BAVnBshoYVLMxCZGK1+QODoto2xj04oaQEzbRAbGjo+kyaU2TmKmpHNCZWS1cqT6M2C0drCnbR9RypUbcXphG5J5J8eaogRSmURGo9i4qKliKcZoMsUzqJw/3AxjLONPV/x6YhXTKXu2dMUnykSa2j/orGn2jNFUvXtYLiopjCxPPLnL9lPGgYOR1AILib4P4zJn+R/AlvG3hfc578zqNAVqoPCCqQEQlhtHAGoMs2ZTxidOJki01CkxNKVnqyUijDh1SiDApUqw0W6qBIle75xWopI4tCJoR6xoBUbRUKdAoOFgKKtMufU6xXy2piZKKER2JG9r+/hJgwMqqaahokf/SLS03L8nPBVaJIiSR4SJQhm5dY8XKliKRRZ6MqTWo0+Fc/sbJkS5QujUTWv9Lv5j5IaKNiIhEZURAV0ajZjYyJpXQuk9oYbfrbz6B0WAAAAA==) format("woff2");unicode-range:U+2660,U+2663,U+2665-2666,U+E000}@font-face{font-family:DejaVu Sans;font-style:normal;font-weight:700 900;font-display:swap;src:url(/assets/dejavu-sans-rank-DpZw2B6N.woff2) format("woff2");unicode-range:U+0030-0039,U+0041-005A}:root{--white: #ffffff;--card-face: #faf6ec;--page: hsl(38, 18%, 91%);--line: hsl(38, 16%, 84%);--line-cell: hsl(38, 14%, 78%);--line-strong: hsl(38, 12%, 68%);--ink-secondary: hsl(35, 12%, 36%);--ink: hsl(35, 20%, 14%);--wood: hsl(35, 40%, 88%);--wood-back: hsl(28, 30%, 42%);--wood-back-edge: hsl(28, 38%, 22%);--olive: hsl(73, 70%, 36%);--olive-tint: rgb(236, 245, 201);--olive-tint-strong: rgb(221, 238, 161);--navy: hsl(228, 65%, 32%);--navy-tint: rgb(216, 220, 239);--ink-blue: hsl(220, 30%, 28%);--ink-blue-dark: hsl(220, 30%, 21%);--ink-blue-tint: rgb(230, 232, 236);--green: #3f6f23;--green-tint-strong: rgb(174, 195, 163);--red: hsl(0, 65%, 42%);--red-tint: rgb(250, 235, 235);--red-tint-strong: rgb(234, 169, 169);--orange: hsl(26, 90%, 42%);--amber: hsl(39, 87%, 45%);--navy-light: hsl(228, 55%, 45%);--stone: hsl(35, 8%, 66%);--stone-tint: hsl(38, 16%, 86%);--line-faint: hsl(38, 16%, 90%);--track: hsl(38, 18%, 93%);--cream: hsl(38, 18%, 95%);--sky: hsl(209, 79%, 44%);--sky-dark: hsl(209, 79%, 36%);--shadow-soft: hsla(35, 15%, 8%, .1);--shadow-strong: hsla(35, 15%, 8%, .18);--glow-olive: hsla(73, 75%, 48%, .42);--glow-navy: hsla(228, 65%, 40%, .32);--overlay: hsla(0, 0%, 100%, .9);--wash-olive: hsla(73, 75%, 48%, .24);--wash-hover: hsla(38, 30%, 60%, .12);--lightbox: hsla(35, 18%, 6%, .97);--lightbox-ink: hsla(40, 24%, 92%, .9);--lightbox-ink-soft: hsla(40, 24%, 92%, .75);--lightbox-ink-faint: hsla(40, 24%, 92%, .55);--lightbox-ink-track: hsla(40, 24%, 92%, .22);--shadow-lightbox: 0 10px 50px hsla(0, 0%, 0%, .55);--bg-page: var(--page);--bg-table: var(--wood);--bg-panel: var(--white);--bg-pill: var(--white);--border: var(--line);--border-strong: var(--line-strong);--border-cell: var(--line-cell);--text: var(--ink);--text-secondary: var(--ink-secondary);--text-dim: var(--ink-secondary);--text-inverse: var(--white);--suit-red: var(--red);--suit-black: var(--ink);--suit-wild: var(--orange);--card-back: var(--wood-back);--card-back-edge: var(--wood-back-edge);--accent-active: var(--olive);--accent-active-bg: var(--olive-tint);--accent-active-fill: var(--olive-tint-strong);--accent-active-wash: var(--wash-olive);--accent-active-glow: var(--glow-olive);--accent-warm: var(--navy);--accent-warm-bg: var(--navy-tint);--accent-warm-glow: var(--glow-navy);--link: var(--sky);--link-hover: var(--sky-dark);--btn-primary: var(--ink-blue);--btn-primary-hover: var(--ink-blue-dark);--btn-primary-bg: var(--ink-blue-tint);--good: var(--green);--warn: var(--amber);--bad: var(--red);--bad-bg: var(--red-tint);--bad-fill: var(--red-tint-strong);--good-fill: var(--green-tint-strong);--shadow-card: 0 1px 3px var(--shadow-soft);--shadow-panel: 0 1px 4px var(--shadow-soft);--shadow-lift: 0 4px 10px var(--shadow-strong);--font-cjk: "Miai CJK SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", "Source Han Sans SC";--font-body: "Miai Pips", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, var(--font-cjk), sans-serif;--font-display: "Miai Pips", "Golos Text", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, var(--font-cjk), sans-serif;--font-card: "Miai Pips", "DejaVu Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, var(--font-cjk), sans-serif;--font-mono: ui-monospace, "Cascadia Mono", SFMono-Regular, Menlo, Consolas, monospace;--type-title-size: 28px;--type-title-weight: 500;--type-heading-size: 22px;--type-heading-weight: 500;--type-body-size: 15px;--type-body-weight: 400;--type-strong-size: 15px;--type-strong-weight: 600;--type-small-size: 13px;--type-small-weight: 400;--type-small-strong-size: 13px;--type-small-strong-weight: 600;--type-label-size: 11px;--type-label-weight: 400;--type-label-case: uppercase;--type-label-tracking: .08em;--type-tag-size: 15px;--type-tag-weight: 700;--type-figure-size: 24px;--type-figure-weight: 600;--card-cell-w: 36px;--card-cell-h: 32px;--page-form: 540px;--page-read: 720px;--page-wide: 1320px;--page-pad-x: 20px;--page-pad-top: 40px;--page-pad-bottom: 80px;--page-nav-height: 16px;--page-nav-gap: 8px;--card-rank-size: 24px;--card-rank-weight: 700;--glyph-close: 32px;--glyph-arrow: 46px;--glyph-arrow-narrow: 34px}:root:not(:lang(en)){--type-label-case: none;--type-label-tracking: 0}:root:lang(zh-Hant){--font-cjk: "Miai CJK TC", "PingFang TC", "Microsoft JhengHei", "Noto Sans CJK TC", "Noto Sans TC", "Source Han Sans TC"}:root:lang(ja){--font-cjk: "Miai CJK JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", Meiryo, "Noto Sans CJK JP", "Noto Sans JP", "Source Han Sans JP"}:root{--accent-lime: var(--olive);--accent-navy: var(--navy-light);--accent-gold: var(--amber);--shadow-hover: var(--shadow-lift);--card-w: 72px;--card-h: 96px;--space-1: 4px;--space-2: 6px;--space-3: 8px;--space-4: 12px;--space-5: 16px;--space-6: 20px;--space-7: 24px;--space-8: 32px;--space-9: 44px;--space-10: 64px;--space-11: 72px;--radius-xs: 4px;--radius-sm: 8px;--radius: 10px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{background:var(--bg-page);color:var(--text);font-family:var(--font-body);font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:1.65;overflow-x:hidden}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover);text-decoration:underline}button{font:inherit;cursor:pointer}.page{max-width:var(--page-read);margin:0 auto;padding:0 var(--page-pad-x);display:flex;flex-direction:column;min-height:100vh}.masthead{display:block;padding:calc(var(--page-pad-top) + var(--page-nav-height) + var(--page-nav-gap)) 0 var(--space-5);margin-bottom:var(--space-6);border-bottom:1px solid var(--border)}.brand{display:block;font-family:var(--font-display);font-size:var(--type-title-size);font-weight:var(--type-title-weight);line-height:1.15;letter-spacing:-.015em;color:var(--text)}.brand:hover{color:var(--text);text-decoration:none}.brand-group{display:block}.brand-caption{display:block;margin-top:var(--space-2);font-family:var(--font-body);font-size:var(--type-body-size);font-weight:var(--type-body-weight);color:var(--text-secondary)}.topnav{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);margin-top:var(--space-6)}.topnav-link{font-family:var(--font-body);font-size:var(--type-body-size);font-weight:var(--type-body-weight);color:var(--text-secondary)}.topnav-link:hover{color:var(--link);text-decoration:none}.topnav-link.is-active{color:var(--text);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.ext{color:var(--text-dim)}.topnav-arcade{background-image:linear-gradient(105deg,currentColor 0% 42%,var(--accent-gold) 50%,currentColor 58% 100%);background-size:300% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:arcade-sheen 3s linear infinite}@keyframes arcade-sheen{0%{background-position:100% 0}to{background-position:0% 0}}@media (prefers-reduced-motion: reduce){.topnav-arcade{animation:none}}.site-main{flex:1 0 auto}.site-footer{position:relative;margin-top:var(--space-11);padding:var(--space-6) 0 var(--space-9);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);color:var(--text-dim);font-size:var(--type-small-size);font-weight:var(--type-small-weight)}.footer-links{display:flex;gap:var(--space-5)}.footer-links a{font-family:var(--font-display)}.recaman-backdrop{position:absolute;bottom:100%;left:50%;transform:translate(-50%);width:100vw;z-index:-1;display:block;pointer-events:none;color:var(--border-strong);-webkit-mask-image:linear-gradient(to top,black 38%,transparent);mask-image:linear-gradient(to top,black 38%,transparent)}.page-head{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.home-links{display:flex;flex-wrap:wrap;gap:var(--space-6);margin:0}.home-links a{font-family:var(--font-body);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.pub{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5) var(--space-6);margin:0 0 var(--space-5);box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease}.pub:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)}.pub-title{font-family:var(--font-body);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight);line-height:1.4;margin-bottom:var(--space-2);color:var(--text)}.pub-authors{font-size:var(--type-body-size);font-weight:var(--type-body-weight);color:var(--text-secondary);margin-bottom:var(--space-4)}.author-self{color:var(--text);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.pub-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4)}.pub-venue{font-family:var(--font-body);font-size:var(--type-small-strong-size);font-weight:var(--type-small-strong-weight);color:var(--text-secondary)}.pub-badge{font-family:var(--font-body);font-size:var(--type-small-strong-size);font-weight:var(--type-small-strong-weight);line-height:1.4;padding:2px var(--space-4);border:1px solid transparent;border-radius:999px;letter-spacing:.02em;color:var(--text-inverse);text-transform:uppercase}.badge-oral{background:var(--accent-navy)}.badge-spotlight{background:var(--accent-lime)}.badge-best-student-paper{background:var(--accent-gold)}.pub-link{font-family:var(--font-body);font-size:var(--type-small-strong-size);font-weight:var(--type-small-strong-weight)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-4)}.gallery-item{display:block;padding:0;border:none;background:none;line-height:0}.gallery-item img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:var(--radius-sm);box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease}.gallery-item:hover img{transform:translateY(-3px);box-shadow:var(--shadow-hover)}.gallery-empty{color:var(--text-dim);padding:var(--space-5) 0}.game-tile{display:flex;align-items:center;gap:var(--space-7);background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-5) var(--space-6);margin:0 0 var(--space-5);box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease}.game-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);text-decoration:none}.game-tile-name{font-family:var(--font-body);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight);color:var(--text)}.game-tile-tagline{margin-top:var(--space-1);font-size:var(--type-body-size);font-weight:var(--type-body-weight);color:var(--text-secondary)}.game-tile-host{margin-top:var(--space-3);font-family:var(--font-body);font-size:var(--type-small-strong-size);font-weight:var(--type-small-strong-weight);color:var(--link)}.arcade-hand{flex:none;display:grid;grid-template-rows:var(--card-h)}.arcade-hand-cell{position:relative;width:var(--card-w);height:var(--card-h);transition:transform .1s ease}.arcade-hand-cell:hover~.arcade-hand-cell{transform:translate(var(--card-cell-w))}.arcade-hand-cell:hover .arcade-card{transform:translateY(-8px);box-shadow:var(--shadow-lift)}.arcade-card{position:relative;width:var(--card-w);height:var(--card-h);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-xs);box-shadow:var(--shadow-card);font-family:var(--font-card);font-weight:var(--card-rank-weight);-webkit-user-select:none;user-select:none;overflow:hidden;transition:transform 80ms ease,box-shadow 80ms ease}.arcade-card.suit-red{color:var(--suit-red)}.arcade-card.suit-black{color:var(--suit-black)}.arcade-card-index{position:absolute;top:6px;left:8px;display:flex;flex-direction:column;align-items:center;line-height:1}.arcade-card-rank{font-size:var(--card-rank-size);letter-spacing:-.02em}.arcade-card-suit{font-size:var(--card-rank-size)}.arcade-tiles{--tile-w: calc(var(--card-cell-w) * 1.25);grid-template-columns:repeat(4,var(--tile-w)) var(--card-cell-w);align-items:center}.arcade-tile{position:relative;width:var(--tile-w);height:calc(var(--tile-w) * 4 / 3);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius-xs);box-shadow:var(--shadow-card);transition:transform 80ms ease,box-shadow 80ms ease}.arcade-tile+.arcade-tile{margin-left:-1px}.arcade-tile img{position:absolute;left:10%;top:8%;width:80%;height:84%;-webkit-user-select:none;user-select:none}.arcade-tile:hover{transform:translateY(-8px);box-shadow:var(--shadow-lift)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-7);background:var(--lightbox);animation:lb-fade .16s ease}@keyframes lb-fade{0%{opacity:0}to{opacity:1}}.lb-figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:var(--space-4);max-width:92vw}.lb-stage{position:relative;display:flex;align-items:center;justify-content:center;min-width:var(--space-10);min-height:var(--space-10)}.lb-image{max-width:92vw;max-height:82vh;object-fit:contain;border-radius:var(--radius-xs);box-shadow:var(--shadow-lightbox);opacity:0;transition:opacity .3s ease}.lb-image.is-loaded{opacity:1}.lb-spinner{position:absolute;width:34px;height:34px;border-radius:50%;border:2px solid var(--lightbox-ink-track);border-top-color:var(--lightbox-ink);animation:lb-spin .8s linear infinite}@keyframes lb-spin{to{transform:rotate(360deg)}}.lb-caption{display:flex;align-items:center;justify-content:space-between;gap:var(--space-7);width:100%;font-family:var(--font-body);font-size:var(--type-small-size);font-weight:var(--type-small-weight);color:var(--lightbox-ink)}.lb-count{color:var(--lightbox-ink-faint);font-variant-numeric:tabular-nums}.lb-close{position:fixed;top:var(--space-5);right:var(--space-6);background:none;border:none;font-size:var(--glyph-close);line-height:1;padding:var(--space-2) var(--space-4);color:var(--lightbox-ink-soft)}.lb-close:hover{color:var(--white)}.lb-nav{position:fixed;top:50%;transform:translateY(-50%);background:none;border:none;font-size:var(--glyph-arrow);line-height:1;padding:var(--space-4) var(--space-5);color:var(--lightbox-ink-soft)}.lb-nav:hover{color:var(--white)}.lb-prev{left:var(--space-2)}.lb-next{right:var(--space-2)}.markdown{font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:1.55}.markdown p{margin:.7em 0}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown strong{color:var(--text);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.markdown h2{font-family:var(--font-display);font-size:var(--type-heading-size);font-weight:var(--type-heading-weight);margin:var(--space-8) 0 var(--space-4);padding-bottom:var(--space-1);border-bottom:1px solid var(--border)}.markdown ul,.markdown ol{padding-left:var(--space-7)}.markdown li{margin:0 0 var(--space-2)}@media (max-width: 600px){.masthead{padding-top:var(--space-6);margin-bottom:var(--space-8)}.topnav{gap:var(--space-2) var(--space-5)}.lb-nav{font-size:var(--glyph-arrow-narrow);padding:var(--space-3) var(--space-4)}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:var(--space-3)}.game-tile{flex-direction:column;align-items:flex-start;gap:var(--space-5)}.arcade-tiles{grid-template-rows:auto}}.games-page{max-width:var(--page-read);margin:0 auto;padding:var(--page-pad-top) var(--page-pad-x) var(--page-pad-bottom)}.games-back{height:var(--page-nav-height);margin-bottom:var(--page-nav-gap);line-height:var(--page-nav-height);font-size:var(--type-small-strong-size);font-weight:var(--type-small-strong-weight)}.games-back a{color:var(--text-secondary);text-decoration:none}.games-back a:hover{color:var(--text);text-decoration:underline}.games-article{color:var(--text);font-size:var(--type-body-size);font-weight:var(--type-body-weight);line-height:1.55}.games-article h1,.games-article h2{font-family:var(--font-display);color:var(--text);margin-top:1.6em;margin-bottom:.4em;line-height:1.25}.games-article h1{font-size:var(--type-title-size);font-weight:var(--type-title-weight);margin-top:0}.games-article h1+p{margin:0 0 1.6em;color:var(--text-secondary)}.games-article h2{font-size:var(--type-heading-size);font-weight:var(--type-heading-weight);border-bottom:1px solid var(--border);padding-bottom:4px}.games-article p{margin:.7em 0}.games-article ul{margin:.5em 0 .9em;padding-left:1.4em}.games-article li{margin:.25em 0}.games-article code{background:var(--bg-pill);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:var(--type-body-size);font-weight:var(--type-body-weight);font-family:var(--font-mono);color:var(--text)}.games-article a{color:var(--btn-primary);text-decoration:none}.games-article a:hover{text-decoration:underline}.games-article strong{color:var(--text);font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.status-legend{display:flex;flex-wrap:wrap;gap:4px 16px;min-height:1.55em}.status-legend>span{display:inline-flex;align-items:center;gap:6px}.status-key{display:inline-flex;width:8px;height:12px}.status-unreachable{color:var(--bad)}.games-article .status-rows{list-style:none;margin:0;padding:0}.games-article .status-rows li{margin:0 0 14px}.status-head{display:flex;align-items:center;gap:2px 12px;margin-bottom:6px;font-size:var(--type-body-size);font-weight:var(--type-body-weight)}.status-name{font-size:var(--type-strong-size);font-weight:var(--type-strong-weight)}.status-state{display:inline-flex;align-items:center;gap:6px;font-size:var(--type-small-size);font-weight:var(--type-small-weight);color:var(--text-secondary)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong)}.status-dot[data-state=normal]{background:var(--good)}.status-dot[data-state=degraded]{background:var(--warn)}.status-dot[data-state=down]{background:var(--bad)}.status-strip{display:grid;grid-template-columns:repeat(48,1fr);height:20px}.status-cell{display:flex;min-width:0;padding:0 1px}.status-bar{display:block;width:100%;height:100%;border-radius:2px;background:var(--border)}.status-bar[data-state=normal]{background:var(--good-fill)}.status-bar[data-state=degraded]{background:var(--warn)}.status-bar[data-state=down]{background:var(--bad)}.status-axis{display:flex;justify-content:space-between;font-size:var(--type-label-size);font-weight:var(--type-label-weight);text-transform:var(--type-label-case);letter-spacing:var(--type-label-tracking);color:var(--text-secondary)}
