@font-face{font-family:Manrope;src:url('./assets/manrope.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('./assets/manrope-bold.ttf') format('truetype');font-weight:700 800;font-display:swap}
:root{color-scheme:light;--bg:#f8f5ef;--surface:#fffefd;--ink:#2f2548;--muted:#6a6278;--accent:#6945d0;--accent-ink:#fff;--tint:#eee8fc;--line:#ddd6e8;--edge:#d2c8e3;--yellow:#f5d87c;--yellow-ink:#5d4312;--correct:#26755c;--positive:#e0f2e9;--shadow:0 5px 9px -4px #37255224;font-family:Manrope,system-ui,sans-serif;font-synthesis:none}
:root[data-theme=dark]{color-scheme:dark;--bg:#191726;--surface:#282437;--ink:#f6f1ff;--muted:#bdb3ce;--accent:#bfa6ff;--accent-ink:#261846;--tint:#372d4e;--line:#4b415e;--edge:#4a3d63;--yellow:#f5d87c;--yellow-ink:#382809;--correct:#86d4b1;--positive:#243e35;--shadow:0 5px 9px -4px #0008}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.5}button,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button{border:0;cursor:pointer;color:inherit}button:disabled{cursor:default}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{line-height:1.25;text-wrap:balance}a,button,summary{touch-action:manipulation}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}::selection{background:var(--yellow);color:var(--yellow-ink)}textarea{caret-color:var(--accent)}*{scrollbar-color:var(--edge) var(--bg);scrollbar-width:thin}.shell{max-width:816px;padding:0 28px;margin:auto}.site-header{height:102px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line)}.brand-title{font-size:25px;font-weight:800;letter-spacing:-1px}.brand{display:flex;align-items:center;gap:11px}.brand-symbol{width:39px;height:39px;stroke:none;overflow:visible}.brand-symbol rect{fill:var(--accent)}.brand-symbol>path{stroke:var(--accent-ink);stroke-width:3;fill:none;stroke-linejoin:round;stroke-linecap:round}.brand-symbol .jump-mark{stroke:var(--yellow);stroke-width:3}.brand-light{font-weight:800}.header-tools{display:flex;align-items:center;gap:5px}.icon-button{width:44px;min-height:44px;display:grid;place-items:center;border-radius:12px;background:transparent;color:var(--muted)}.icon-button:hover,.icon-button[aria-expanded=true]{background:var(--tint);color:var(--accent)}.icon-button svg{width:22px;height:22px}.mode-nav{display:flex;justify-content:center;gap:4px;max-width:360px;margin:24px auto 0;padding:4px;border:1px solid var(--line);border-radius:14px;background:var(--tint)}.mode-nav a{display:flex;align-items:center;justify-content:center;min-height:42px;flex:1;position:relative;font-size:13px;font-weight:800;color:var(--muted);border-radius:10px}.mode-nav a:hover{color:var(--ink)}.mode-nav a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:0 2px 5px #37255212}.mode-nav a[aria-current=page]:before{content:'';height:5px;width:5px;border-radius:50%;background:var(--accent);margin-right:7px}.game{max-width:580px;margin:36px auto 0;min-width:0;scroll-margin-top:16px}.game:focus{outline:none}.game-top{position:relative;text-align:center;margin-bottom:18px;padding:0 40px}.puzzle-meta{display:flex;justify-content:center;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-weight:700}.round-tag{background:var(--yellow);color:var(--yellow-ink);padding:3px 8px;border-radius:5px;font-weight:800}.game-top h2{font-size:27px;font-weight:800;letter-spacing:-.8px}.challenge-link{position:absolute;right:0;top:3px;min-width:40px;min-height:40px;display:grid;place-items:center;border-radius:10px;background:transparent;color:var(--muted)}.challenge-link:hover{background:var(--tint);color:var(--accent)}.challenge-link svg{width:18px;height:18px}.board-context{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:17px}.board-context .puzzle-meta{flex:none}.board-hint{display:flex;align-items:center;justify-content:center;gap:6px;color:var(--muted);font-size:12px;margin:0}.board-hint svg{width:14px;height:14px}.event-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.event-card{display:grid;grid-template-columns:68px minmax(0,1fr) 44px;align-items:center;gap:12px;position:relative;background:var(--surface);border:1px solid var(--line);border-bottom:3px solid var(--edge);box-shadow:var(--shadow);border-radius:15px;padding:4px 10px;min-height:96px;transition:box-shadow .2s,border-color .2s}.event-card:hover{border-color:var(--edge)}.event-title{font-size:16px;font-weight:700;line-height:1.45;overflow-wrap:anywhere;letter-spacing:-.15px}.drag-handle{position:relative;width:68px;height:84px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;touch-action:none;cursor:grab;background:transparent;border-radius:9px;color:var(--accent)}.event-position{position:absolute;top:3px;left:1px;width:24px;height:24px;border:2px solid var(--surface);display:grid;place-items:center;border-radius:7px;background:var(--accent);color:var(--accent-ink);font-size:10px;font-weight:800;font-variant-numeric:tabular-nums}.event-illustration{display:block;width:56px;height:56px;border-radius:11px;object-fit:contain;background:#eee8fc;pointer-events:none;user-select:none}.drag-handle>svg{width:12px;height:12px;color:var(--muted);opacity:.7}.drag-handle:hover .event-position{background:var(--accent);color:var(--accent-ink)}.move-buttons{display:flex;flex-direction:column;gap:0}.move-button{width:44px;height:40px;display:grid;place-items:center;background:transparent;color:var(--muted);border-radius:9px}.move-button svg{width:17px;height:17px}.move-button:hover:not(:disabled){background:var(--tint);color:var(--accent)}.move-button:disabled{opacity:.25}.event-card.is-dragging{border-color:var(--accent);border-bottom-color:var(--accent);background:var(--tint);box-shadow:0 12px 20px -9px #6945d052;z-index:2}.is-dragging .drag-handle{cursor:grabbing}.is-dragging .event-position{background:var(--accent);color:var(--accent-ink)}.board-actions{margin-top:22px}.primary-button,.secondary-button{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:13px 20px;font-size:15px;font-weight:800;border-radius:13px;line-height:1.5;transition:transform .15s,box-shadow .15s}.primary-button{background:var(--accent);color:var(--accent-ink);width:100%;box-shadow:0 4px 8px -3px #47317940;border-bottom:3px solid #0002}.primary-button svg{width:20px;height:20px}.primary-button:hover{filter:brightness(1.05)}.primary-button:active{transform:translateY(2px);box-shadow:0 1px 3px #47317922}.primary-button:disabled{opacity:.65}.secondary-button{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-bottom:3px solid var(--edge)}.secondary-button:hover{background:var(--tint)}.attempt-note{color:var(--muted);font-size:11px;text-align:center;margin-top:10px}.disclosure-panel{max-width:580px;margin:24px auto 0;padding:22px 24px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.disclosure-panel h2{font-size:21px;letter-spacing:-.5px;margin-bottom:12px}.help-panel p{font-size:13px;color:var(--muted);line-height:1.7}.help-panel p+p{margin-top:10px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}.stats-grid>div{text-align:center;border-right:1px solid var(--line)}.stats-grid>div:last-child{border:0}.stats-grid dt{font-size:12px;color:var(--muted)}.stats-grid dd{margin:7px 0 0;font-size:33px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-1px}.local-note{font-size:11px;color:var(--muted);text-align:center}.next-puzzle{padding-top:16px;margin-top:16px;border-top:1px solid var(--line);display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:7px;font-size:12px;color:var(--muted)}.countdown{font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.result-top{text-align:center;padding:2px 0}.result-heading{font-size:28px;letter-spacing:-.8px;margin:0 0 6px}.result-top .puzzle-meta{margin-top:10px}.result-description{font-size:13px;color:var(--muted)}.result-summary{display:flex;align-items:center;justify-content:center;gap:25px;padding:22px 0 26px}.result-score{display:flex;align-items:baseline;gap:5px}.result-score strong{font-size:80px;font-weight:800;letter-spacing:-3px;line-height:1;color:var(--accent)}.result-score>span{font-size:18px;color:var(--muted)}.pair-grid{display:grid;grid-template-columns:repeat(5,20px);gap:5px}.pair-square{width:20px;height:20px;background:var(--tint);border:1px solid var(--line);border-radius:6px}.pair-square.correct{background:var(--accent);border-color:var(--accent);box-shadow:0 2px 3px #47317920}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.result-note{color:var(--muted);font-size:11px;text-align:center;margin-top:11px}.solution-disclosure{margin-top:28px;border-top:1px solid var(--line)}.solution-disclosure>summary{display:flex;align-items:center;justify-content:space-between;min-height:62px;font-size:15px;font-weight:800;cursor:pointer;list-style:none}.solution-disclosure>summary::-webkit-details-marker{display:none}.solution-disclosure>summary:after{content:'+';font-size:24px;color:var(--muted);font-weight:400}.solution-disclosure[open]>summary:after{content:'−'}.mistakes{padding:16px 18px;margin:0 0 18px;background:var(--tint);border-radius:12px}.mistakes h3{font-size:14px;margin-bottom:9px}.mistakes p{font-size:12px;color:var(--muted);line-height:1.7}.mistakes p+p{margin-top:8px}.mistakes strong{color:var(--ink)}.solution-list{list-style:none;padding:0;margin:0}.solution-event{display:grid;grid-template-columns:62px minmax(0,1fr);gap:16px;padding:17px 0;border-top:1px solid var(--line)}.solution-year{font-weight:800;font-size:21px;line-height:1.4;color:var(--accent);font-variant-numeric:tabular-nums}.solution-heading{display:flex;align-items:center;gap:10px}.solution-heading .event-illustration{width:42px;height:42px;flex:none;border-radius:8px}.solution-event h4{font-size:14px;line-height:1.5}.position-feedback{display:inline-flex;align-items:center;gap:5px;color:var(--correct);font-size:10px;margin-top:7px;font-weight:700}.position-feedback svg{width:12px;height:12px}.position-feedback.off{color:var(--muted)}.solution-event details{font-size:12px;color:var(--muted);margin-top:7px}.solution-event summary{cursor:pointer;min-height:30px;display:list-item;list-style-position:inside}.solution-event details p{margin:8px 0;line-height:1.7}.source-link{font-size:12px;text-decoration:underline;text-underline-offset:4px;min-height:36px;display:inline-flex;align-items:center;gap:3px}.own-order{border-top:1px solid var(--line);padding-top:14px;font-size:12px;color:var(--muted)}.own-order summary{min-height:40px;cursor:pointer;color:var(--ink)}.own-order ol{padding-left:22px;line-height:2}.text-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:12px;text-decoration:underline;text-underline-offset:4px}.archive-title{font-size:27px;text-align:center;letter-spacing:-.8px;margin-bottom:23px}.archive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;list-style:none;margin:0;padding:0}.archive-card{display:flex;flex-direction:column;border:1px solid var(--line);border-bottom:3px solid var(--edge);border-radius:14px;background:var(--surface);padding:18px;min-height:150px;box-shadow:var(--shadow)}.archive-card:hover{background:var(--tint)}.archive-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:11px}.archive-meta>span:first-child{background:var(--yellow);color:var(--yellow-ink);padding:2px 6px;border-radius:5px;font-weight:800}.archive-card h3{font-size:16px;line-height:1.4;margin:15px 0 10px;letter-spacing:-.4px}.archive-card p{font-size:11px;color:var(--muted);margin-top:auto}.archive-card p.archive-score{color:var(--accent);font-weight:800}.empty-state{text-align:center;padding:28px 12px}.empty-state h2{font-size:27px;margin-bottom:12px;letter-spacing:-.8px}.empty-state p{font-size:14px;color:var(--muted);margin-bottom:24px}.empty-actions{display:flex;flex-direction:column;gap:12px;max-width:360px;margin:auto}.site-footer{max-width:580px;margin:29px auto 24px;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:10px}.site-footer svg{width:36px;height:12px;color:var(--edge)}.loading-message{padding:80px 0;text-align:center;color:var(--muted);font-size:13px}.skip-link{position:fixed;top:8px;left:8px;transform:translateY(-180%);background:var(--accent);color:var(--accent-ink);padding:10px 16px;z-index:50;border-radius:9px}.skip-link:focus{transform:none}.sr-only{position:absolute;height:1px;width:1px;overflow:hidden;white-space:nowrap;clip-path:inset(50%)}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:13px 18px;border-radius:12px;max-width:calc(100vw - 28px);width:max-content;font-size:13px;z-index:40;box-shadow:0 8px 18px #0002}dialog{width:calc(100% - 32px);max-width:440px;color:var(--ink);background:var(--surface);border:1px solid var(--line);padding:24px;border-radius:18px;box-shadow:0 14px 45px #0003}dialog::backdrop{background:#241b3c80}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-heading h2{font-size:25px}dialog p{font-size:13px;color:var(--muted);margin:15px 0}dialog textarea{background:var(--bg);color:var(--ink);width:100%;min-height:164px;resize:vertical;font-size:13px;line-height:1.7;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:15px}
@media(max-width:600px){.shell{padding:0 18px}.site-header{height:70px}.brand-title{font-size:21px;letter-spacing:-.7px}.brand-symbol{width:34px;height:34px}.brand{gap:8px}.header-tools{gap:1px}.mode-nav{margin-top:17px;max-width:330px}.mode-nav a{min-height:38px;font-size:12px}.game{margin-top:18px}.game-top{padding:0 35px;margin-bottom:12px}.game-top h2{font-size:22px;letter-spacing:-.55px}.puzzle-meta{font-size:10px}.board-context{margin-bottom:12px;gap:8px}.board-context .round-tag{padding:2px 6px}.board-hint{font-size:11px;gap:4px}.event-list{gap:8px}.event-card{grid-template-columns:60px minmax(0,1fr) 44px;gap:7px;padding:0 7px;min-height:92px;border-radius:13px}.event-title{font-size:15px;line-height:1.4;letter-spacing:-.1px}.drag-handle{width:60px;height:80px}.event-illustration{width:48px;height:48px;border-radius:10px}.move-button{height:44px}.event-position{width:23px;height:23px;font-size:10px;border-radius:7px}.board-actions{margin-top:12px}.primary-button,.secondary-button{min-height:50px;padding:12px 16px;font-size:14px}.attempt-note{font-size:10px;margin-top:9px}.site-footer{margin-top:22px;font-size:9px}.disclosure-panel{padding:20px;margin-top:18px}.result-heading{font-size:26px}.result-score strong{font-size:74px}.result-actions{gap:9px}.result-actions>*{font-size:13px;padding:12px 10px;gap:7px}.solution-event{grid-template-columns:53px minmax(0,1fr);gap:12px}.solution-year{font-size:20px}.archive-card{padding:15px;min-height:146px}.archive-card h3{font-size:14px}.archive-title{font-size:24px}.result-summary{padding:20px 0 24px}}
@media(max-width:350px){.shell{padding:0 12px}.brand-title{font-size:18px}.brand-symbol{width:29px;height:29px}.brand{gap:6px}.header-tools{gap:0}.site-header{gap:7px}.event-card{grid-template-columns:52px minmax(0,1fr) 44px;gap:5px;padding:0 5px}.drag-handle{width:52px}.event-illustration{width:42px;height:42px;border-radius:9px}.event-title{font-size:14px;line-height:1.45}.game-top h2{font-size:20px}.mode-nav{margin-top:14px}.game-top{padding:0 31px}.archive-grid{gap:8px}.archive-card{padding:12px}.archive-meta{font-size:10px}.archive-card h3{font-size:13px}.result-score strong{font-size:68px}.result-actions{gap:7px}.result-actions>*{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(forced-colors:active){.event-card,.primary-button,.secondary-button,.event-position,.archive-card,.pair-square{border:1px solid CanvasText}.pair-square.correct{background:Highlight}.brand-symbol rect{fill:Highlight}.brand-symbol>path{stroke:HighlightText}.mode-nav a[aria-current=page]{border:1px solid Highlight}.position-feedback{color:CanvasText}}

/* Sharing extends the same tactile game; challenges appear only on scored links. */
.site-footer{flex-wrap:wrap}.language-switch{min-inline-size:44px;justify-content:center;padding-inline:8px;border-radius:9px;flex:none}.language-switch:hover{background:var(--tint);color:var(--accent)}
.friend-challenge{display:flex;flex-direction:column;gap:3px;padding:12px 16px;margin:0 0 16px;background:var(--tint);border:1px solid var(--line);border-radius:12px;color:var(--ink)}.friend-challenge>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}.friend-challenge strong{font-size:13px;font-weight:800}.friend-challenge span{font-size:12px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.friend-challenge small{font-size:10px;color:var(--muted)}.friend-challenge.is-complete{margin-top:0;margin-bottom:20px}.share-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.share-choices>*{font-size:13px;padding:12px 10px;min-width:0;line-height:1.4}.share-manual{margin-top:20px;border-top:1px solid var(--line);padding-top:8px}.share-manual>summary{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:700}.share-manual>summary:before{content:'+';color:var(--muted);font-size:20px;font-weight:400}.share-manual[open]>summary:before{content:'−'}.share-manual textarea{min-height:164px;margin:6px 0 10px}.share-manual .secondary-button{width:100%;font-size:13px;min-height:44px}.share-done{display:block;min-height:44px;margin:12px auto 0;padding:8px 20px;border-radius:9px;background:transparent;color:var(--muted);font-size:13px;font-weight:700}.share-done:hover{background:var(--tint);color:var(--ink)}#share-dialog{max-height:calc(100dvh - 32px);overflow:auto}.share-choices button:disabled{opacity:.6}.share-choices #share-native:last-child{grid-column:1/-1}@media(max-width:600px){.friend-challenge{padding:10px 12px;margin-bottom:12px;gap:2px}#share-dialog{padding:20px}.dialog-heading h2{font-size:22px}.share-choices{gap:8px}}@media(max-width:350px){.share-choices{grid-template-columns:1fr}.share-choices>*{min-height:44px}.friend-challenge>div{gap:2px}.dialog-heading h2{font-size:20px}}
.undo-order{position:absolute;left:-4px;top:-5px;width:44px;height:44px;display:grid;place-items:center;border-radius:10px;background:transparent;color:var(--muted)}.undo-order svg{width:19px;height:19px}.undo-order:hover:not(:disabled){background:var(--tint);color:var(--accent)}.undo-order:disabled{opacity:.25}.event-card{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.event-card.is-pressing{border-color:var(--accent)}.event-card.is-dragging{cursor:grabbing}.event-title{-webkit-user-select:none;user-select:none}.event-card button{cursor:pointer}.event-card .drag-handle{cursor:grab}.event-card.is-dragging .drag-handle{cursor:grabbing}

/* The held card follows the pointer; its real row keeps the destination open. */
.event-card.is-drag-placeholder{background:var(--tint);border:1px dashed var(--accent);box-shadow:none;z-index:0;transition:none}
.event-card.is-drag-placeholder>*{opacity:0}
.drag-overlay{position:fixed;left:0;top:0;z-index:60;display:grid;grid-template-columns:68px minmax(0,1fr) 44px;align-items:center;gap:12px;padding:4px 10px;background:var(--surface);border:1px solid var(--accent);border-bottom:3px solid var(--accent);border-radius:15px;box-shadow:0 18px 32px -12px #37255240,0 4px 9px -4px #37255224;pointer-events:none;user-select:none;touch-action:none;will-change:transform;transition:none}
.drag-illustration{display:block;width:56px;height:56px;border-radius:11px;object-fit:contain;background:#eee8fc;pointer-events:none;user-select:none}
body.is-sorting,body.is-sorting *{cursor:grabbing!important}
:root[data-theme=dark] .drag-overlay{box-shadow:0 18px 32px -12px #0009,0 4px 9px -4px #0008}
@media(max-width:600px){.drag-overlay{grid-template-columns:60px minmax(0,1fr) 44px;gap:7px;padding:0 7px;border-radius:13px}.drag-illustration{width:48px;height:48px;border-radius:10px}}
@media(max-width:350px){.drag-overlay{grid-template-columns:52px minmax(0,1fr) 44px;gap:5px;padding:0 5px}.drag-illustration{width:42px;height:42px;border-radius:9px}}
@media(forced-colors:active){.drag-overlay{border-color:Highlight}.event-card.is-drag-placeholder{border-color:Highlight}}
