:root{--bg: #0e0f11;--bg-grain: #131417;--surface: #191b1e;--surface-2: #212429;--housing: #0a0b0d;--line: #2c2f34;--line-soft: #202327;--ink: #eef0f3;--ink-dim: #9aa0a8;--ink-faint: #5f646c;--read: #d8dbe0;--read-surface: var(--surface);--read-border: var(--line);--green: #3fd16a;--green-deep: #1c7a3d;--green-glow: rgba(63, 209, 106, .35);--amber: #f3b13a;--amber-deep: #9a6c12;--amber-glow: rgba(243, 177, 58, .32);--slate: #2f3338;--slate-ink: #828892;--redline: #ff3b2f;--redline-deep: #b21d14;--redline-glow: rgba(255, 59, 47, .45);--font-display: "Geist", system-ui, sans-serif;--font-body: "Geist", system-ui, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", monospace;--t-xs: .6875rem;--t-sm: .8125rem;--t-base: .9375rem;--t-md: 1.0625rem;--t-lg: 1.375rem;--t-xl: 1.875rem;--t-2xl: 2.75rem;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--radius: 14px;--radius-sm: 9px;--shadow-card: 0 18px 40px -24px rgba(0, 0, 0, .9);--ease-out: cubic-bezier(.16, 1, .3, 1);--z-nav: 40;--z-overlay: 100}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;font-family:var(--font-body);font-size:var(--t-base);line-height:1.5;color:var(--ink);background:radial-gradient(120% 80% at 50% -10%,#1a1c20 0%,transparent 55%),radial-gradient(140% 120% at 50% 120%,#16171a 0%,transparent 55%),var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:4px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.app{max-width:1180px;margin:0 auto;padding:0 var(--s-4) var(--s-7)}.top{position:sticky;top:0;z-index:var(--z-nav);display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-4) 0;margin-bottom:var(--s-5);background:linear-gradient(var(--bg) 70%,transparent);border-bottom:1px solid var(--line-soft)}.brand{display:flex;align-items:baseline;gap:10px}.brand__mark{font-family:var(--font-display);font-weight:900;font-size:var(--t-lg);letter-spacing:.04em;line-height:1}.brand__bid{color:var(--green);text-transform:uppercase}.brand__le{color:var(--redline);text-transform:lowercase}.top__right{display:flex;align-items:center;gap:var(--s-4)}.puzzle-id{font-family:var(--font-mono);font-size:var(--t-sm);color:var(--ink-dim);text-align:right;line-height:1.3}.puzzle-id b{color:var(--ink);font-weight:700}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink-dim);transition:color .18s,border-color .18s,background .18s}.icon-btn:hover{color:var(--ink);border-color:var(--green-deep)}.game{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:var(--s-5);align-items:start}@media (max-width: 900px){.game{grid-template-columns:1fr}}.panel{background:linear-gradient(180deg,var(--surface) 0%,var(--bg-grain) 100%);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card)}.stage{overflow:hidden}.stage__media{position:relative;aspect-ratio:16 / 10;background:radial-gradient(120% 90% at 50% 18%,#262930,#0f1013 70%),var(--housing)}.stage__media svg,.stage__photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.stage__photo{object-fit:cover;display:block}.stage__sold{display:flex;align-items:baseline;gap:10px;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line-soft)}.stage__sold-label{font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint)}.stage__sold-date{font-size:var(--t-md);font-weight:700;color:var(--ink)}.stage__sold-site{margin-left:auto;font-size:var(--t-sm);color:var(--ink-dim)}.stage__bids{flex-shrink:0;font-size:var(--t-sm);color:var(--ink-dim);white-space:nowrap;text-align:right;line-height:1.1}.stage__bids b{color:var(--ink);font-size:var(--t-lg);font-weight:800}.stage__title{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);padding:var(--s-4) var(--s-4) var(--s-2)}.stage__name{font-family:var(--font-display);font-weight:800;font-size:var(--t-lg);line-height:1.1;letter-spacing:-.01em}.stage__name span{display:block;font-size:var(--t-sm);font-weight:600;letter-spacing:.02em;color:var(--ink-dim);margin-top:3px}.specs{padding:var(--s-2) var(--s-4) var(--s-4)}.specs__grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:var(--radius-sm);overflow:hidden}.spec{background:var(--surface);padding:10px 12px}.spec dt{font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:3px}.spec dd{margin:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--t-base);font-weight:500;color:var(--ink)}.taglist{display:flex;flex-direction:column;gap:5px;margin-top:var(--s-2)}.tag{font-size:var(--t-base);line-height:1.45;color:var(--ink)}.section-label{font-size:var(--t-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin:var(--s-4) 0 var(--s-2)}.play{padding:var(--s-5) var(--s-4);display:flex;flex-direction:column;gap:var(--s-4)}.play__head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.play__prompt{font-family:var(--font-display);font-weight:700;font-size:var(--t-md)}.play__prompt span{color:var(--ink-dim);font-weight:500;font-size:var(--t-sm);display:block}.board{display:flex;flex-direction:column;gap:9px}.row{display:flex;justify-content:center;gap:6px}.sep{align-self:center;font-family:var(--font-mono);font-weight:700;color:var(--ink-faint);width:6px;text-align:center}.slot{position:relative;width:clamp(34px,9vw,48px);height:clamp(46px,12vw,62px);border-radius:7px;display:grid;place-items:center;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:800;font-size:clamp(1.15rem,5vw,1.6rem);color:var(--ink);background:linear-gradient(180deg,#0c0d0f,#141619,#0c0d0f);border:1px solid var(--line);box-shadow:inset 0 2px 5px #000000b3,inset 0 -1px #ffffff08}.slot:after{content:"";position:absolute;left:4px;right:4px;top:50%;height:1px;background:#ffffff0d;pointer-events:none}.slot--filled{border-color:var(--line);background:linear-gradient(180deg,#15171b,#1f2228,#15171b)}.slot--active{border-color:var(--green-deep);box-shadow:inset 0 2px 5px #000000b3,0 0 0 1px var(--green-deep),0 0 14px var(--green-glow)}.slot--correct{background:linear-gradient(180deg,#1c7a3d,#28a653);border-color:#34c768;color:#04210e;box-shadow:0 0 16px var(--green-glow)}.slot--present{background:linear-gradient(180deg,#9a6c12,#d99a26);border-color:#efb43c;color:#241701;box-shadow:0 0 16px var(--amber-glow)}.slot--absent{background:linear-gradient(180deg,#23262b,#2f3338);border-color:#393d43;color:var(--slate-ink)}@keyframes reel{0%{transform:translateY(-40%) rotateX(70deg);opacity:0}60%{transform:translateY(6%) rotateX(-8deg);opacity:1}to{transform:translateY(0) rotateX(0)}}.slot--reveal{animation:reel .42s var(--ease-out) both}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.slot--pop{animation:pop .14s ease-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.row--invalid{animation:shake .32s ease-in-out}.tach{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-grain)}.tach__ticks{display:flex;gap:5px;flex:1}.tick{flex:1;height:8px;border-radius:3px;background:var(--slate);transition:background .3s var(--ease-out)}.tick--used{background:var(--green)}.tick--redline{background:var(--redline);box-shadow:0 0 10px var(--redline-glow)}.tach__label{font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);white-space:nowrap}.tach__label b{color:var(--ink)}.keypad{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.key{height:52px;border-radius:10px;border:1px solid var(--line);background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface) 100%);color:var(--ink);font-family:var(--font-mono);font-size:var(--t-md);font-weight:700;transition:transform .08s,border-color .16s,background .16s}.key:hover{border-color:var(--green-deep)}.key:active{transform:translateY(1px)}.key--wide{grid-column:span 1}.key--enter{grid-column:span 2;background:linear-gradient(180deg,#24272c,#191b1e);color:var(--green);letter-spacing:.06em;font-family:var(--font-display)}.key--enter:hover{border-color:var(--green)}.key--enter:disabled{color:var(--ink-faint);background:var(--surface);cursor:not-allowed;border-color:var(--line)}.key--del{grid-column:span 1;color:var(--ink-dim)}.hint{font-size:var(--t-xs);color:var(--ink-faint);text-align:center;min-height:1.2em}.hint--error{color:var(--redline)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:grid;place-items:center;padding:var(--s-4);background:#0406059e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade .2s ease-out}@keyframes fade{0%{opacity:0}}.modal{width:min(440px,100%);background:linear-gradient(180deg,var(--surface) 0%,var(--bg-grain) 100%);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 30px 80px -30px #000000e6;padding:var(--s-6) var(--s-5) var(--s-5);animation:rise .3s var(--ease-out)}@keyframes rise{0%{transform:translateY(14px) scale(.98);opacity:0}}.modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);margin-bottom:var(--s-4)}.modal h2{font-family:var(--font-display);font-weight:800;font-size:var(--t-xl);margin:0;line-height:1.05}.modal h2 small{display:block;font-size:var(--t-sm);font-weight:600;letter-spacing:.04em;color:var(--ink-dim);margin-top:4px}.result-verdict{font-family:var(--font-display);font-weight:800}.result-verdict--win{color:var(--green)}.result-verdict--lose{color:var(--redline)}.reveal-price{text-align:center;padding:var(--s-4);margin:var(--s-4) 0;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--housing)}.reveal-price span{display:block;font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}.reveal-price b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--t-2xl);font-weight:800;color:var(--ink);letter-spacing:-.01em}.share-grid{font-family:var(--font-mono);font-size:1.15rem;line-height:1.25;letter-spacing:2px;text-align:center;margin:var(--s-4) 0;white-space:pre}.reveal-meta{display:block;margin-top:8px;font-size:var(--t-xs);letter-spacing:.04em;color:var(--ink-dim)}.btn{width:100%;height:50px;border-radius:11px;border:1px solid transparent;font-family:var(--font-display);font-weight:700;font-size:var(--t-md);letter-spacing:.02em;transition:transform .08s,filter .16s}a.btn{display:grid;place-items:center;text-decoration:none;box-sizing:border-box}.btn:active{transform:translateY(1px)}.btn--primary{background:linear-gradient(180deg,#ff4b3f 0%,var(--redline-deep) 100%);color:#fff;box-shadow:0 0 22px var(--redline-glow)}.btn--primary:hover{filter:brightness(1.07)}.btn--ghost{background:var(--surface-2);color:var(--ink);border-color:var(--line);margin-top:var(--s-2)}.next-line{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:var(--s-4);font-size:var(--t-sm);color:var(--ink-dim)}.next-line b{font-family:var(--font-mono);color:var(--ink)}.howto p{color:var(--ink-dim);margin:0 0 var(--s-3)}.howto-legend{display:flex;flex-direction:column;gap:var(--s-3);margin:var(--s-4) 0}.legend-row{display:flex;align-items:center;gap:var(--s-3)}.legend-slot{width:38px;height:46px;flex-shrink:0;border-radius:7px;display:grid;place-items:center;font-family:var(--font-mono);font-weight:800}.legend-row span{font-size:var(--t-sm);color:var(--ink-dim)}.legend-row b{color:var(--ink)}.modal__close{background:none;border:none;color:var(--ink-faint);font-size:1.5rem;line-height:1;padding:4px}.modal__close:hover{color:var(--ink)}.foot{text-align:center;margin-top:var(--s-6);font-size:var(--t-xs);color:var(--ink-faint)}.foot a{color:var(--ink-dim)}.photo-credit{position:absolute;bottom:var(--s-3);left:var(--s-3);max-width:calc(100% - 2 * var(--s-3));padding:4px 9px;border-radius:7px;font-size:var(--t-xs);letter-spacing:.03em;color:var(--ink-dim);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#070a08b3;border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:color .16s,border-color .16s}.photo-credit:hover{color:var(--ink);border-color:var(--green-deep)}.seller-note{margin:var(--s-2) 0 0;padding:var(--s-4);border:1px solid var(--read-border);border-radius:var(--radius-sm);background:var(--read-surface);font-size:var(--t-base);line-height:1.75;color:var(--read);white-space:pre-line}.seller-note--clamped{display:-webkit-box;-webkit-line-clamp:5;line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.read-more{margin-top:10px;padding:4px 0;background:none;border:none;color:var(--green);font-family:var(--font-body);font-size:var(--t-sm);font-weight:600}@media (min-width: 901px){.seller-note--clamped{display:block;overflow:visible}.read-more{display:none}}.source-line{display:flex;align-items:center;gap:8px;margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--line-soft);font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.02em;color:var(--ink-dim);text-decoration:none;transition:color .16s}.source-line:hover{color:var(--ink)}.source-line__dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green-glow);flex-shrink:0}.source-line__arrow{margin-left:auto;color:var(--ink-faint)}.reveal-source{display:block;margin-top:8px;font-family:var(--font-mono);font-size:var(--t-xs);letter-spacing:.02em;color:var(--ink-dim);text-decoration:none}.reveal-source:hover{color:var(--ink)}@media (max-width: 640px){.app{padding:0 var(--s-3) var(--s-6)}.top{padding:var(--s-3) 0;margin-bottom:var(--s-4)}.game{gap:var(--s-4)}.stage__media{aspect-ratio:3 / 2}.stage__sold{padding:var(--s-2) var(--s-3)}.stage__title{padding:var(--s-3) var(--s-3) var(--s-2)}.stage__name{font-size:var(--t-md)}.specs{padding:var(--s-1) var(--s-3) var(--s-4)}.spec{padding:8px 10px}.spec dd{font-size:var(--t-sm)}.section-label{margin:var(--s-3) 0 6px}.play{padding:var(--s-4) var(--s-3);gap:var(--s-3)}.key{height:46px}.foot{margin-top:var(--s-5)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
