/* Flip4M Petrol 2.4.0 · BD × AI Lab. Presentation + user-selectable board scale; game rules unchanged. */
:root{--bg:#0b1119;--panel:#121b26;--raised:#1b2735;--line:#304154;--text:#f1f3f2;--muted:#9aa9b7;--mint:#d2a15a;--gold:#f2c55d;--red:#f06d72;--yellow:#f3c84f;--hole:#07101a;--board:#294357;--shadow:0 18px 52px #0005;--soft:#d2a15a14;--accent-ink:#191108}
:root[data-theme=light]{--bg:#eef1f3;--panel:#fff;--raised:#e4e9ed;--line:#c4cdd5;--text:#17232c;--muted:#5c6a76;--mint:#8a5c20;--gold:#946c15;--red:#d54a55;--yellow:#e1ad2f;--hole:#dce4ea;--board:#91a9b9;--shadow:0 16px 48px #14253414;--soft:#8a5c2010;--accent-ink:#fff}
html{min-height:100%;background:var(--bg)}body{background:radial-gradient(ellipse at 18% 0%,#b17c3013,transparent 55%),radial-gradient(ellipse at 90% 18%,#38516616,transparent 42%),var(--bg);font:14px/1.55 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}
button,select{min-height:44px}button:hover:not(:disabled){border-color:var(--mint)}.primary{background:var(--mint);color:var(--accent-ink)}.primary:hover:not(:disabled){background:var(--text);color:var(--bg)}
.skip-link{position:fixed;top:-100px;left:12px;z-index:100;background:var(--panel);padding:12px;border:2px solid var(--mint)}.skip-link:focus{top:12px}
.brand-header{max-width:1220px;width:100%;margin:0 auto;padding:19px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}
.brand-group{display:flex;align-items:center;gap:12px}.brand-symbol{display:grid;grid-template-columns:repeat(2,8px);gap:4px;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--raised)}.brand-symbol i{width:8px;height:8px;border-radius:50%;background:var(--mint)}.brand-symbol i:nth-child(2){background:var(--yellow)}.brand-symbol i:nth-child(3){background:var(--red)}
.brand-name{font-size:25px;font-weight:780;letter-spacing:-1px;line-height:1.1;margin:0}.brand-name span{color:var(--mint)}.brand-caption{font:600 9px/1.5 system-ui;letter-spacing:1.8px;color:var(--muted);margin-top:6px}.channel-badge{font:700 9px/1 system-ui;letter-spacing:1px;margin-left:9px;color:var(--mint);vertical-align:middle;border:1px solid var(--line);padding:4px 6px;border-radius:5px}
.header-tools{display:flex;align-items:center;gap:21px}.version-nav{display:flex;gap:4px;align-items:center;font:700 11px/1.2 system-ui;letter-spacing:.04em}.version-nav a{display:inline-flex;align-items:center;min-height:38px;padding:7px 10px;border-radius:8px;color:var(--muted);border:1px solid transparent}.version-nav a:hover,.version-nav a:focus-visible{color:var(--text);border-color:var(--line)}.version-nav a[aria-current=page]{color:var(--mint);background:var(--soft);border-color:var(--line)}.version-nav .dot{color:var(--muted);opacity:.55}
.language{display:flex;align-items:center;gap:3px;font:700 11px/1 system-ui;color:var(--muted)}.language button{padding:6px;min-width:32px;background:none;border:0;font-size:11px;min-height:38px;color:var(--muted)}.language button[aria-pressed=true]{color:var(--mint)}
.f4m-main{max-width:1220px;padding:25px 24px 0}.layout{grid-template-columns:minmax(0,1fr) 345px;gap:24px}.play-panel{padding:17px 20px 12px;border-radius:16px;background:linear-gradient(155deg,var(--panel),var(--bg))}.board-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;color:var(--muted);font:650 10px/1.4 system-ui;letter-spacing:1.3px}.board-head span:last-child{color:var(--mint);font-size:9px;letter-spacing:.4px}.players{gap:9px}.player{background:var(--raised);padding:9px 11px}.player strong{font-size:13px}.player-disc{font-size:21px}.resources{font-size:11px}.arena{max-width:560px;margin:auto}.status-strip{padding:10px 2px 0;min-height:43px;gap:5px}.status-actions{display:flex;align-items:center;gap:7px}#gravity{font-size:10px}#pause{min-height:30px;padding:4px 8px;font-size:10px;background:var(--raised)}.board-caption{margin-bottom:10px;font-size:10px}.actions{gap:8px}.actions button{font-size:12px;min-height:46px;border-radius:10px;background:var(--raised)}.action-icon{color:var(--mint);font-size:23px}.actions button.selected{color:var(--accent-ink);background:var(--mint)}
.utility{margin-top:8px;gap:4px}.utility button{min-height:42px;font-size:11px;border-radius:8px}.utility button:hover{background:var(--soft)}.feedback{font-size:11px;min-height:0;margin:7px 0 0}.feedback:empty{display:none}.outcome{background:var(--soft)}
.workspace{display:flex;flex-direction:column;gap:0;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;align-self:start}.workspace-heading{padding:17px 18px 12px;font:700 10px/1.4 system-ui;letter-spacing:1.5px;color:var(--muted);display:flex;justify-content:space-between}.workspace-heading span{color:var(--mint);letter-spacing:.3px;font-size:9px}.workspace-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:0 10px 10px;gap:3px;background:var(--panel)}.workspace-tabs button{min-height:44px;padding:8px 2px;font-size:11px;background:transparent;border-color:transparent;font-weight:650;color:var(--muted);border-radius:9px}.workspace-tabs button[aria-selected=true]{background:var(--raised);color:var(--mint);border-color:var(--line)}.workspace-tabs small{display:block;font-size:15px;line-height:1.1;margin-bottom:5px}.workspace-panel{padding:16px 18px;border:0;border-top:1px solid var(--line);border-radius:0;background:var(--panel);margin:0}.workspace-panel>summary{list-style:none;pointer-events:none;font-size:14px;min-height:20px}.workspace-panel>summary::-webkit-details-marker{display:none}.workspace-panel .detail-content{padding-top:12px}.workspace-panel .section-heading{margin-bottom:8px}.workspace-panel label:not(.check){margin:11px 0;font-size:11px}.workspace-panel .tiny{font-size:10.5px;line-height:1.6}.workspace-panel .settings-fold{margin-top:15px}.workspace-panel .settings-fold summary{min-height:36px;display:flex;align-items:center}.workspace-panel select{font-size:12px}.workspace-panel .move-list{max-height:330px}.workspace-panel .move-list button{min-height:36px}.workspace-panel .two-fields{gap:9px}.sim-launch{width:100%;margin-bottom:10px}.workspace-note{padding:13px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.workspace-note p{margin:0}.workspace-note strong{color:var(--mint)}
.site-footer{padding:19px 0;font-size:10px}.site-footer span:last-child{color:var(--mint)}.hidden-hook{display:none!important}.more-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:14px}.more-grid button,.more-grid a{display:flex;align-items:center;justify-content:center;text-align:center;min-height:48px;padding:10px;border:1px solid var(--line);border-radius:9px;font-size:12px;background:var(--raised)}.more-grid a:hover{border-color:var(--mint)}.more-grid .wide{grid-column:1/-1}.more-description{font-size:12px;color:var(--muted);line-height:1.65}dialog{max-height:85dvh;border-radius:17px}dialog .dialog-title h2{font-size:23px}.notice{margin:12px 0 0;padding:10px 12px;background:var(--soft);border:1px solid var(--line);border-radius:9px;color:var(--muted);font-size:11px}.notice button{margin-top:8px;font-size:12px}.notice p{margin:0}.pwa-toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);max-width:calc(100% - 28px);width:430px;z-index:20;background:var(--panel);border:1px solid var(--mint);border-radius:13px;padding:13px;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}.pwa-toast button{font-size:11px}.offline-state{color:var(--mint)}
/* APP is a real fixed-layout view, not a viewport-based redirect or iframe. */
.preview-header{max-width:1120px;width:100%;margin:0 auto;padding:24px 22px;display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center}.preview-title{font-size:18px;letter-spacing:-.3px;font-weight:720;margin:0}.preview-title span{color:var(--mint)}.preview-width{margin:0!important;display:flex!important;flex-direction:row!important;align-items:center;justify-self:end;gap:9px!important;font-size:11px!important;white-space:nowrap}.preview-width select{width:86px;min-height:38px;font-size:12px;color-scheme:dark}.preview-stage{display:flex;justify-content:center;align-items:flex-start;padding:8px 12px 28px}.device{width:calc(var(--device-width,402px) + 20px);max-width:100%;height:clamp(610px,calc(100dvh - 130px),874px);padding:8px;border:2px solid #43586a;border-radius:44px;background:#060b10;box-shadow:0 28px 80px #0005,0 0 0 3px #172431;display:flex;flex-direction:column}.device-top{flex:none;height:25px;display:flex;justify-content:center;align-items:center;background:var(--bg);border-radius:33px 33px 0 0}.island{width:96px;height:17px;background:#05090d;border-radius:20px}.device-screen{flex:1;min-height:0;overflow:auto;border-radius:0 0 32px 32px;background:var(--bg);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.device-bottom{background:var(--bg);height:18px;border-radius:0 0 34px 34px;flex:none;display:flex;justify-content:center;align-items:center}.device-bottom span{width:106px;height:4px;background:var(--muted);border-radius:9px}.is-app .f4m-shell{min-height:100%;display:flex;flex-direction:column}.is-app .brand-header{padding:10px 13px;border:0;gap:8px}.is-app .brand-symbol{padding:8px;gap:3px;grid-template-columns:repeat(2,6px);border-radius:10px}.is-app .brand-symbol i{width:6px;height:6px}.is-app .brand-name{font-size:22px}.is-app .brand-caption{font-size:7px;letter-spacing:1px;margin-top:4px}.is-app .header-tools{gap:6px}.is-app .brand-header .version-nav{display:none}.is-app .f4m-main{width:100%;padding:0 8px;display:flex;flex-direction:column;flex:1}.is-app .layout{display:flex;flex-direction:column;flex:1;gap:0}.is-app .play-panel{border:0;border-radius:0;padding:3px 5px 8px;background:none;box-shadow:none;order:1}.is-app .board-head{display:none}.is-app .player{padding:7px 9px;border-radius:10px;gap:7px}.is-app .player strong{font-size:11px}.is-app .resources{font-size:10px}.is-app .player-disc{font-size:18px}.is-app .versus{font-size:8px}.is-app .status-strip{padding-top:7px;min-height:36px;font-size:11px}.is-app .arena{width:100%;max-width:470px}.is-app .board-caption{font-size:9px;margin:0 3px 8px}.is-app .actions button{min-height:44px;font-size:10px;gap:5px;padding:8px 2px}.is-app .utility button{font-size:10px;min-height:42px}.is-app .feedback{font-size:10px;line-height:1.5;margin:4px 2px}.is-app .workspace{display:contents}.is-app .workspace-heading,.is-app .workspace-note{display:none}.is-app .workspace-panel{order:1;border:1px solid var(--line);border-radius:12px;margin:3px 0 12px;padding:15px;flex:1}.is-app .workspace-tabs{order:4;position:sticky;bottom:0;z-index:3;border-top:1px solid var(--line);padding:6px 1px 5px;margin-top:auto;gap:2px;background:var(--bg)}.is-app .workspace-tabs button{font-size:10px;min-height:50px}.is-app .site-footer{padding:7px 0 8px;text-align:center;display:block;font-size:8px}.is-app .site-footer span:not(:last-child){display:none}.is-app .pwa-toast{bottom:18px}.app-phone .preview-header,.app-phone .device-top,.app-phone .device-bottom{display:none}.app-phone .preview-stage{display:block;padding:0}.app-phone .device{width:100%;max-width:none;height:100dvh;padding:0;border:0;border-radius:0;box-shadow:none;background:var(--bg)}.app-phone .device-screen{border-radius:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.app-phone .brand-header{flex-wrap:wrap}.app-phone .brand-header .version-nav{display:flex;order:-1;width:100%;justify-content:center}.app-phone .header-tools{flex:1;justify-content:flex-end}.app-phone .brand-header .header-tools .version-nav{display:none}
@media(max-width:800px){.preview-header{grid-template-columns:1fr auto;gap:8px;padding:15px 12px}.preview-header .version-nav{grid-column:1/-1;grid-row:2;justify-self:center}.preview-title{font-size:15px}.brand-header{padding:14px 16px;gap:10px;flex-wrap:wrap}.header-tools{gap:12px}.brand-name{font-size:23px}.brand-caption{font-size:8px}.version-nav a{padding:7px;min-height:40px}.version-nav{font-size:10px}.version-nav .dot{display:none}.f4m-main{padding:14px 12px 0}.layout{grid-template-columns:1fr;gap:12px}.play-panel{max-width:580px;width:100%;margin:0 auto}.workspace{max-width:580px;width:100%;margin:0 auto}.workspace-heading{display:none}.workspace-tabs{padding:7px}.workspace-panel{padding:16px}.site-footer{font-size:9px}.site-footer span:nth-child(2){display:none}}
@media(max-width:500px){.brand-header{justify-content:center;padding:10px 12px}.brand-group{gap:8px}.brand-symbol{padding:8px}.brand-name{font-size:22px}.brand-caption{letter-spacing:.8px}.header-tools{width:100%;justify-content:space-between}.f4m-main{padding:8px 8px 0}.play-panel{padding:10px 8px}.board-head{display:none}.player{padding:8px;gap:7px}.player strong{font-size:11px}.player-disc{font-size:19px}.resources{font-size:10px}.arena{max-width:470px}.actions button{font-size:10px;gap:4px;padding:8px 2px}.utility button{font-size:10px}.status-strip{font-size:10px}.board-caption{font-size:9px}.is-app .header-tools{width:auto;justify-content:flex-end}.is-app .brand-header{justify-content:space-between}.preview-header .version-nav a{padding:7px}.preview-width span{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
/* Flex must stretch in the fixed APP view; inherited grid align-items:start would shrink the board. */
.is-app .layout{align-items:stretch;width:100%}.is-app .play-panel,.is-app .workspace-tabs,.is-app .workspace-panel{width:100%}.is-app .f4m-main{margin:0}.is-app .header-tools #more{min-height:34px;padding:4px 8px;font-size:11px}.is-app .header-tools #pause{flex:none}

/* Board scale: Standard preserves 2.2 geometry; Max is the new default selected by shell.js. */
.board-size-setting{display:flex;flex-direction:column;gap:7px;margin:16px 0 4px;color:var(--muted);font-size:11px}
.board-size-setting select{width:100%;min-height:44px}
body[data-board-size="standard"] .arena{max-width:560px}
body[data-board-size="standard"] .rotor{left:11%;top:11%;width:78%;height:78%}
body[data-board-size="large"] .arena{max-width:650px}
body[data-board-size="large"] .rotor{left:8%;top:8%;width:84%;height:84%}
body[data-board-size="max"] .arena{max-width:760px}
body[data-board-size="max"] .rotor{left:5%;top:5%;width:90%;height:90%}
@media(max-width:800px){body[data-board-size="large"] .arena,body[data-board-size="max"] .arena{max-width:none}}

/* Desktop APP preview follows the ChessBest / 8zSudoku shell rhythm:
   header stays at top, phone is centered in the remaining viewport, and
   the Petrol canvas continues below the device without a second grey band. */
html:not(.app-phone) body.is-app{min-height:100dvh;display:flex;flex-direction:column}
html:not(.app-phone) body.is-app>.preview-header{flex:0 0 auto}
html:not(.app-phone) body.is-app>.preview-stage{flex:1 1 auto;min-height:0;align-items:center;padding:8px 12px 28px}

/* COMPACT_RIM_240: a slim visible cap, separate larger transparent tap target.
   Board/matrix dimensions remain unchanged in Standard, Large and Max.
   Matrix inset includes the one-pixel board-frame border. */
#rim{--rim-inset:10px;--rim-offset:7px;position:absolute;inset:var(--rim-inset);pointer-events:none;z-index:2}
#rim .mag-slot{position:absolute;left:auto;right:auto;top:auto;bottom:auto;width:calc(12.5% - 2px);height:32px;min-width:0;min-height:0;padding:0;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;outline:none;opacity:1;display:block;transform:translate(-50%,-50%);transition:none;pointer-events:none}
#rim .mag-slot:not(:disabled){pointer-events:auto}
#rim .mag-slot[data-side="0"]{left:var(--lane);top:calc(0px - var(--rim-inset) - var(--rim-offset))}
#rim .mag-slot[data-side="2"]{left:var(--lane);top:calc(100% + var(--rim-inset) + var(--rim-offset))}
#rim .mag-slot[data-side="1"]{left:calc(100% + var(--rim-inset) + var(--rim-offset));top:var(--lane);width:32px;height:calc(12.5% - 2px)}
#rim .mag-slot[data-side="3"]{left:calc(0px - var(--rim-inset) - var(--rim-offset));top:var(--lane);width:32px;height:calc(12.5% - 2px)}
#rim .mag-slot .mag-cap{position:absolute;left:50%;top:50%;width:clamp(16px,72%,30px);height:12px;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);border:1px solid var(--line);border-radius:4px;background:var(--raised);color:var(--muted);opacity:.18;pointer-events:none;transition:opacity .15s,border-color .15s,background .15s}
#rim .mag-slot[data-side="1"] .mag-cap,#rim .mag-slot[data-side="3"] .mag-cap{width:12px;height:clamp(16px,72%,30px)}
#rim .mag-slot .mag-life{display:block;transform:rotate(calc(-1 * var(--angle)));font:800 9px/1 system-ui,sans-serif;pointer-events:none}
.magnet-mode #rim .mag-slot.empty:not(:disabled) .mag-cap{opacity:1;border-color:var(--mint);color:var(--mint)}
#rim .mag-slot.owned1 .mag-cap{opacity:1;background:var(--red);border-color:var(--red);color:#101820}
#rim .mag-slot.owned2 .mag-cap{opacity:1;background:var(--yellow);border-color:var(--yellow);color:#101820}
#rim .mag-slot.expiring .mag-cap{box-shadow:0 0 0 1px var(--text)}
#rim .mag-slot:focus-visible .mag-cap,#rim .mag-slot.hint-flash .mag-cap{opacity:1;outline:2px solid var(--mint);outline-offset:1px}
#rim .mag-slot:hover:not(:disabled) .mag-cap{opacity:1;border-color:var(--text);box-shadow:0 0 0 1px var(--mint)}
@media(max-width:680px){#rim{--rim-inset:8px}}

/* Keep the logical APP width exact when a small desktop needs outer scrolling. */
html:not(.app-phone) body.is-app .device{max-width:none;flex:none;height:937px}
