:root{color-scheme:dark;--bg:#0c221d;--panel:#123128;--panel2:#193e32;--paper:#fffbef;--text:#f7f3e6;--muted:#b9cbbf;--line:#3b5b4b;--gold:#e6c486;--mint:#b6dcc3;--red:#ffc0bc;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;background:var(--bg);color:var(--text)}
*{box-sizing:border-box}body{margin:0;line-height:1.55;background:radial-gradient(ellipse at 80% 0,#37533744,transparent 50%),var(--bg)}[hidden]{display:none!important}a{color:var(--gold);text-underline-offset:4px}button,input,select{font:inherit}button,select,input[type=number]{min-height:44px}button,summary{cursor:pointer}button{touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.12}h1{font-family:Georgia,serif;font-weight:400;font-size:clamp(40px,6vw,72px);letter-spacing:-.035em}h2{font-family:Georgia,serif;font-weight:400;font-size:30px}h3{font-size:18px}.shell{max-width:1120px;margin:auto;padding:0 28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px 0;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);letter-spacing:.13em;font-size:12px;font-weight:750}.mark{height:34px;width:34px;display:grid;place-items:center;border:1px solid var(--gold);border-radius:7px;color:var(--gold);font:24px Georgia,serif}.brand small{display:block;letter-spacing:.1em;color:var(--muted);font-size:10px}.toplinks{display:flex;gap:20px;font-size:13px}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:var(--gold);font-size:11px;font-weight:700}.hero{display:flex;align-items:end;justify-content:space-between;gap:32px;padding:35px 0 28px}.hero h1{margin:8px 0 10px}.hero p:not(.eyebrow){color:var(--muted);max-width:560px}.hero-note{font:italic 22px/1.5 Georgia,serif;color:var(--mint);text-align:right;flex:none}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px;align-items:start}.machine{border:1px solid #697659;border-radius:20px;overflow:hidden;background:linear-gradient(140deg,#264838,#133329 45%,#17372c);box-shadow:0 20px 45px #0003}.machine-top{padding:17px 22px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #5f755344;background:#0a211c66}.machine-label{font-size:11px;letter-spacing:.17em;font-weight:700;color:var(--mint)}.bank{text-align:right;font-variant-numeric:tabular-nums}.bank small{font-size:10px;color:var(--muted);display:block}.bank strong{font-size:21px;font-weight:600}.vault{margin:19px 22px 0;border:1px solid #c39d5266;border-radius:12px;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#152d20}.vault h2{font:15px/1.3 Georgia,serif;color:var(--gold)}.vault p{font-size:11px;color:var(--muted)}.vault-amount{font-size:27px;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1.1;text-align:right;white-space:nowrap}.vault-amount small{font-size:10px;display:block;color:var(--muted)}.rotors{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:25px 22px 12px}.rotor{text-align:center;min-width:0}.rotor-label{font:11px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted);letter-spacing:.1em;margin-bottom:10px}.drum{position:relative;display:flex;align-items:center;justify-content:center;padding:17px 0 15px;border:1px solid #6b8062;border-radius:50% 50% 12px 12px;background:linear-gradient(180deg,#69806844,#0f281f88);box-shadow:inset 0 5px 16px #0003}.drum:before{content:"";position:absolute;top:7px;left:calc(50% - 2px);width:4px;height:5px;border-radius:1px;background:var(--gold)}.rotor p51-token{--reel-size:clamp(42px,5.5vw,65px);position:relative}.rotor.held .drum{border-color:var(--gold);background:linear-gradient(180deg,#b5985744,#132f2588)}.rotor.held .drum:after{content:"";position:absolute;inset:-3px;border:1px solid #d1ad6477;border-radius:inherit;pointer-events:none}.residue{font:10px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted);margin-top:10px;min-height:16px;white-space:nowrap}.hold{border:1px solid #73876988;border-radius:7px;background:#102b21;color:var(--text);width:100%;min-height:40px;margin-top:10px;font-size:11px;font-weight:650;letter-spacing:.05em}.held .hold{background:var(--gold);color:#20382b;border-color:var(--gold)}.result{margin:5px 22px 12px;min-height:71px;text-align:center;display:flex;flex-direction:column;justify-content:center}.result strong{font:25px Georgia,serif}.result p{font-size:12px;color:var(--muted);margin-top:4px}.result.win strong{color:var(--gold)}.controls{padding:0 22px 20px}.action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{min-height:46px;border-radius:8px;background:#234938;color:var(--text);border:1px solid #70856a;padding:9px 14px;font-size:13px;font-weight:650}.btn.primary{background:var(--gold);color:#17362b;border-color:var(--gold)}.btn.soft{background:transparent;border-color:var(--line);font-weight:500}.button-note{font-size:11px;color:var(--muted);text-align:center;margin-top:10px}.display-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:15px;padding-top:14px;border-top:1px solid #66805b44}.display-row p{font-size:11px;color:var(--muted)}.segmented{display:flex;gap:2px;background:#09241c;border:1px solid var(--line);padding:3px;border-radius:8px}.segmented button{background:transparent;color:var(--muted);border:0;border-radius:5px;font-size:11px;min-height:32px;padding:5px 11px}.segmented button[aria-pressed=true]{background:#375b43;color:var(--paper)}.aside{display:grid;gap:15px}.panel{border:1px solid var(--line);border-radius:14px;background:#14332966;padding:20px}.panel h2{font-size:25px;margin:8px 0 12px}.panel p{color:var(--muted);font-size:12px}.paytable{border-collapse:collapse;width:100%;font-size:12px;margin:8px 0 10px}.paytable td{padding:6px 0;border-bottom:1px solid #3b5b4b66}.paytable td:last-child{text-align:right;font-variant-numeric:tabular-nums;color:var(--gold)}.paytable tr.active{background:#48643a66}.paytable tr.active td{font-weight:700;color:var(--text)}.key{display:flex;gap:6px;margin:12px 0}.key p51-token{--p51-size:27px}.mini{font-size:11px;color:var(--muted)}.under-machine{display:grid;gap:15px;margin-top:15px}.details{border:1px solid var(--line);border-radius:12px;background:#102e2566;overflow:hidden}.details summary{padding:15px 18px;font-size:13px;font-weight:650;min-height:48px}.details summary span{color:var(--muted);font-size:11px;font-weight:400;float:right}.details-body{padding:0 18px 18px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}label{font-size:12px;color:var(--muted);display:block}select,input[type=number]{display:block;width:100%;border:1px solid var(--line);border-radius:7px;background:#0b251d;color:var(--text);padding:8px;margin-top:6px}input[type=range]{width:100%;accent-color:var(--gold)}.settings-grid .wide{grid-column:1/-1}.settings-grid p,.details-body p{font-size:12px;color:var(--muted);margin-top:10px}.odds-btn{width:100%;margin-top:12px}.odds-result{font-size:13px;margin-top:12px;color:var(--mint);font-variant-numeric:tabular-nums;min-height:24px}.error{background:#562c24;color:#ffe3d3;padding:14px 18px;border:1px solid #d99580;border-radius:10px;margin:14px 0}.example-banner{background:#66562f;color:#fff0c6;text-align:center;padding:10px 18px;font-size:12px}.examples{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.examples .btn{font-size:11px;min-height:40px}.essay{margin:42px 0 0;padding-top:28px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:28px}.essay h2{font-size:32px;margin:8px 0 13px}.essay p{font-size:14px;color:var(--muted);margin-bottom:14px}.essay p51-token{--p51-size:24px}.equation{font:15px ui-monospace,SFMono-Regular,Consolas,monospace;background:#08241c;border-radius:7px;padding:12px 14px;color:var(--gold);margin:15px 0;overflow-wrap:anywhere}.lab{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.lab h3{margin:5px 0 10px}.lab label{margin-top:12px}.lab-result{display:flex;align-items:center;gap:15px;margin-top:15px}.lab-result p51-token{--p51-size:45px}.lab .dots{display:grid;grid-template-columns:repeat(17,1fr);gap:4px;margin-top:14px}.dot{aspect-ratio:1;border-radius:50%;background:#334b3e}.dot.on{background:var(--gold)}.lab p{font-size:12px;color:var(--muted)}.fineprint{font-size:12px;color:var(--muted);margin:20px 0}.trace{width:100%;border-collapse:collapse;font:11px ui-monospace,SFMono-Regular,Consolas,monospace}.trace td,.trace th{padding:6px 5px;text-align:center;border-bottom:1px solid var(--line)}.trace-wrap{overflow-x:auto;max-width:100%}.history{margin-top:12px;font-size:12px}.history-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.footer{display:flex;justify-content:space-between;gap:20px;margin:34px 0 25px;border-top:1px solid var(--line);padding-top:18px;font-size:11px;color:var(--muted)}.footer button{background:none;color:var(--gold);border:0;min-height:32px;font-size:11px;padding:0}.spinning .drum{animation:turn .32s ease-out}.spinning p51-token{animation:flash .32s ease-out}@keyframes turn{0%{transform:translateY(-3px);filter:brightness(1.35)}100%{transform:none;filter:none}}@keyframes flash{0%{opacity:.15;transform:translateY(6px)}100%{opacity:1;transform:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;top:-80px;left:20px;background:var(--gold);color:#123128;padding:8px;z-index:10}.skip:focus{top:10px}
@media(max-width:900px){.play-layout{grid-template-columns:minmax(0,1fr) 240px;gap:16px}.shell{padding:0 20px}.hero-note{font-size:19px}.rotors{gap:7px;padding-inline:15px}.machine-top,.controls{padding-inline:16px}.vault{margin-inline:16px}.rotor p51-token{--reel-size:clamp(42px,6vw,60px)}}
@media(max-width:700px){.shell{padding:0 16px}.topbar{padding:15px 0}.toplinks{gap:15px;font-size:12px}.toplinks .desktop-link{display:none}.hero{padding:22px 0 20px;display:block}.hero-note{display:none}.hero h1{font-size:46px;margin-top:6px}.hero p:not(.eyebrow){font-size:13px}.play-layout{display:flex;flex-direction:column;gap:16px}.play-main,.aside{width:100%}.aside{grid-template-columns:1fr 1fr}.machine{border-radius:15px}.machine-top{padding:12px 15px}.machine-label{font-size:10px}.vault{margin-top:14px;padding:10px 12px}.vault-amount{font-size:24px}.vault h2{font-size:14px}.rotors{padding-top:19px;gap:8px}.rotor p51-token{--reel-size:clamp(42px,12vw,65px)}.rotor-label{font-size:9px;margin-bottom:8px}.residue{font-size:9px}.hold{min-height:44px;font-size:10px}.drum{padding:16px 0 12px}.result{min-height:65px;margin-bottom:8px}.result strong{font-size:23px}.panel{padding:16px}.essay{grid-template-columns:1fr;gap:16px;margin-top:28px}.essay h2{font-size:28px}.lab{grid-template-columns:1fr}.footer{display:block}.footer p{margin-top:8px}.display-row p{max-width:50%}}
@media(max-width:370px){.shell{padding:0 12px}.topbar{gap:10px}.brand{font-size:10px;gap:8px}.brand small{font-size:9px}.toplinks{font-size:11px}.hero h1{font-size:42px}.rotors{padding-inline:10px;gap:5px}.rotor p51-token{--reel-size:42px}.vault{margin-inline:12px}.vault p{font-size:10px}.controls{padding-inline:12px}.aside{grid-template-columns:1fr}.residue{font-size:8px}.settings-grid{grid-template-columns:1fr}.details summary span{float:none;display:block;margin-top:4px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Two-line readouts remain inside each rotor on narrow phones. */
.residue{display:grid;line-height:1.35;min-height:28px;white-space:normal}.residue span{display:block;white-space:nowrap}.action-row:has(#deal:not([hidden])) #deal,.action-row:has(#exit-example:not([hidden])) #exit-example{grid-column:1/-1}
@media(max-width:370px){.rotor p51-token{--reel-size:44px}}
/* The hold operation is a full-size touch target at every layout breakpoint. */
.hold{min-height:44px}

/* Prospect 51 v0.3.2 - mechanical-video reel pass.
   Presentation only: the engine commits the hand before these rotors move. */
.spinning .drum,.spinning p51-token{animation:none!important}
.rotors{--cell-h:86px;--window-h:154px;padding-top:15px;position:relative;gap:10px;perspective:900px}
.drum{display:block;position:relative;isolation:isolate;padding:11px 6px;background:linear-gradient(90deg,#5c5638 0,#c8b06d 3%,#5e5a3b 7%,#203929 13%,#0a1912 23%,#102a1d 77%,#203929 87%,#6d6541 93%,#d1ba76 97%,#554d31 100%);border:1px solid #d3bb78;border-radius:16px;box-shadow:0 8px 15px #0005,inset 0 1px 0 #fff7,inset 0 -1px 0 #0008;overflow:hidden}
.drum:before{content:"";position:absolute;z-index:6;top:3px;left:17%;right:17%;width:auto;height:4px;border-radius:50%;background:linear-gradient(90deg,transparent,#fff3,#ffe5a5aa,#fff3,transparent);box-shadow:0 1px 4px #0008}
.drum:after{content:"";position:absolute;z-index:5;inset:5px;border:1px solid #e4ce8a55;border-radius:11px;pointer-events:none;box-shadow:inset 0 0 0 1px #07130d99}
.rotor.held .drum{border-color:#f0d48b;background:linear-gradient(90deg,#6f6035 0,#e0c170 3%,#71643b 8%,#31482a 15%,#102016 24%,#18321f 76%,#31482a 87%,#88713b 94%,#e4c776 98%,#695831 100%)}
.rotor.held .drum:after{inset:5px;border-color:#f0d48b66;border-radius:11px}
.reel-window{height:var(--window-h);position:relative;overflow:hidden;background:linear-gradient(90deg,#08100c 0,#1b3525 12%,#4b6545 49%,#1b3525 88%,#08100c 100%);border-radius:8px;box-shadow:inset 0 0 0 2px #030806bb,inset 0 10px 20px #000a,inset 0 -10px 20px #000a;contain:layout paint;transform:translateZ(0)}
.reel-window:before,.reel-window:after{content:"";position:absolute;left:0;right:0;pointer-events:none;z-index:4}
.reel-window:before{top:0;height:100%;background:linear-gradient(180deg,#020704f2 0%,#07120ccd 9%,#142a1b44 23%,transparent 37%,transparent 63%,#142a1b44 77%,#07120ccd 91%,#020704f2 100%);box-shadow:inset 14px 0 16px #0006,inset -14px 0 16px #0006}
.reel-window:after{top:50%;height:calc(var(--cell-h) - 4px);transform:translateY(-50%);border-block:2px solid #e7cc7a66;box-shadow:0 -1px 0 #050906cc,0 1px 0 #050906cc,inset 0 5px 12px #fff1,inset 0 -5px 12px #0002;background:linear-gradient(90deg,#f6da7d0a,transparent 18%,transparent 82%,#f6da7d0a)}
.reel-rest,.reel-strip{position:absolute;left:0;right:0;top:calc(50% - var(--cell-h)/2)}
.reel-rest{transform:translateY(calc(-1 * var(--cell-h)))}
.reel-cell{height:var(--cell-h);display:flex;align-items:center;justify-content:center;flex:none;position:relative}
.reel-cell:after{content:"";position:absolute;left:13%;right:13%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,#eed48722,transparent)}
.reel-face{position:relative;z-index:2}
.reel-strip{display:none;pointer-events:none;will-change:auto;backface-visibility:hidden}
.is-spinning .reel-strip{display:block;will-change:transform,filter}
.is-spinning .reel-rest{visibility:hidden}
.is-spinning .drum{border-color:#f0d48b;box-shadow:0 9px 18px #0005,0 0 0 1px #f0d48b33,inset 0 1px 0 #fff8}
.is-spinning .reel-window{box-shadow:inset 0 0 0 2px #030806bb,inset 0 16px 24px #000b,inset 0 -16px 24px #000b,0 0 10px #e6c48618}
.is-stopping .drum{animation:prospect-clunk .19s cubic-bezier(.22,.72,.35,1)!important}
@keyframes prospect-clunk{0%{transform:translateY(-2px)}42%{transform:translateY(2px) scaleY(.997)}72%{transform:translateY(-.7px)}100%{transform:translateY(0)}}
.reel-above,.reel-below{pointer-events:none;opacity:.48;filter:saturate(.72) brightness(.76)}
@media(max-width:900px) and (min-width:701px){.rotors{--cell-h:78px;--window-h:140px;gap:7px}.drum{padding:9px 4px}}
@media(max-width:700px){.rotors{--cell-h:80px;--window-h:138px;gap:8px;padding-top:12px}.drum{padding:9px 3px}}
@media(max-width:430px){.rotors{--cell-h:68px;--window-h:116px}.drum{padding:7px 2px}.rotor p51-token{--reel-size:44px}}
@media(max-width:370px){.rotors{gap:5px}.drum{padding-inline:1px}}
@media(prefers-reduced-motion:reduce){.reel-strip{will-change:auto!important}.is-stopping .drum{animation:none!important}}
