
:root{font-family:'DM Sans',sans-serif;color:#172524;background:#f4f3ed;font-synthesis:none;--ink:#172524;--muted:#6f7671;--line:#dcded5;--accent:#cf523b;--paper:#f4f3ed;--surface:#fcfcf7;--green:#688251;--ball-size:48px}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.38}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #cf523b;outline-offset:5px}button{color:inherit}a{color:inherit}button svg{display:block}[hidden]{display:none!important}.site-shell{max-width:1280px;margin:0 auto;padding:0 52px}.site-header{height:106px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{text-decoration:none;font-family:'Manrope',sans-serif;font-size:23px;letter-spacing:-1.2px;font-weight:800;display:flex;align-items:center;gap:9px}.wordmark-dot{color:var(--accent);margin-left:-9px}.brand-mark{display:inline-flex;width:29px;height:29px;border-radius:6px;background:var(--ink);align-items:center;justify-content:center;color:var(--paper);font-size:21px;font-weight:650;letter-spacing:-5px;padding-right:4px}.brand-mark span{font-size:13px;transform:translateY(4px)}.header-right{display:flex;gap:34px;align-items:center}.lab-label{font-size:10px;letter-spacing:1.4px;border:1px solid #d4d9cf;border-radius:5px;padding:8px 10px;font-weight:700}.lab-label span{color:#80867f;margin-left:9px}.text-button{border:0;background:none;padding:7px 0;font-size:12px;font-weight:550;display:inline-flex;align-items:center;gap:14px;text-decoration:none}.text-button:hover{color:var(--accent)}.help-button{font-size:12px}.help-button span{font-size:17px}.introduction{padding:48px 0 36px;display:flex;align-items:end;justify-content:space-between}.eyebrow{font-size:9px;letter-spacing:1.8px;font-weight:700;margin:0;display:flex;align-items:center;gap:8px}.tiny-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent)}h1,h2,p{margin-top:0}h1{font-family:'Manrope',sans-serif;font-weight:650;font-size:clamp(44px,5.5vw,68px);line-height:1.12;letter-spacing:-3.4px;margin:15px 0 10px}h1>span{color:var(--accent)}.subtitle{font-size:17px;color:var(--muted);margin:0;letter-spacing:-.3px}.intro-note{display:flex;gap:17px;align-items:start;color:var(--muted);font-size:12px;line-height:1.8;margin:0 2px 5px 20px}.intro-note p{margin:0}.note-line{margin-top:8px;width:27px;height:1px;background:#a6aea1}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 242px;gap:37px;align-items:start}.play-card{border:1px solid #d9ddd3;background:var(--surface);border-radius:15px;position:relative;overflow:hidden;box-shadow:0 4px 0 #e9ebe2}.play-toolbar{display:flex;align-items:center;justify-content:space-between;padding:24px 28px;border-bottom:1px solid #e6e8df;gap:15px}.mode-control{display:flex;align-items:center;gap:14px}.mode-control label{font-size:8px;letter-spacing:1.3px;font-weight:700;color:#778074}.mode-control select{border:0;background-color:transparent;color:var(--ink);font-size:13px;font-weight:550;padding:7px 20px 7px 0;cursor:pointer;max-width:145px}.primary-button{display:inline-flex;justify-content:center;align-items:center;gap:10px;border:1px solid var(--ink);background:var(--ink);border-radius:7px;padding:12px 16px;color:#f7f7ef;font-size:12px;font-weight:550;white-space:nowrap;transition:background .15s,transform .15s}.primary-button:hover{background:#30443e;transform:translateY(-1px)}.primary-button>span{font-size:16px}.board-wrap{padding:42px 28px 20px}.board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;justify-items:center;gap:16px 12px;min-height:286px}.board:has(.tube-button:nth-child(7)){grid-template-columns:repeat(4,minmax(0,1fr));max-width:540px;margin:0 auto}.tube-button{position:relative;border:0;padding:8px 0 0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:14px;width:100%;border-radius:10px;transition:transform .2s}.tube{position:relative;display:flex;flex-direction:column-reverse;justify-content:flex-start;align-items:center;width:72px;height:246px;gap:7px;padding:12px 7px;border:2px solid #cbd5ca;border-top:0;border-radius:0 0 29px 29px;background:linear-gradient(90deg,#edf2e842,transparent 45%,#ecf1e733);box-shadow:inset 3px 0 0 #ffffffb3,3px 4px 0 #e8ece34d;transition:border-color .2s,background .2s,box-shadow .2s,transform .2s}.tube:before{content:'';position:absolute;left:-5px;right:-5px;top:-4px;height:6px;border:2px solid #cbd5ca;border-radius:5px;background:var(--surface);transition:border-color .2s}.tube:after{content:'';position:absolute;left:5px;top:10px;bottom:24px;width:3px;background:#fff9;border-radius:2px;pointer-events:none}.ball{flex:0 0 var(--ball-size);display:flex;align-items:center;justify-content:center;width:var(--ball-size);height:var(--ball-size);border-radius:50%;background:radial-gradient(circle at 31% 24%,#ffffff68 0%,#ffffff15 35%,#00000014 100%),var(--ball-color,#ca654d);box-shadow:inset -3px -4px 6px #0000000c,inset 2px 2px 3px #ffffff2e,0 2px 3px #1725240e;color:#172524a6;font-family:'Manrope',sans-serif;font-weight:750;font-size:12px;line-height:1;position:relative;user-select:none;transition:transform .2s}.ball:empty:after{content:attr(data-symbol);opacity:.7;font-size:11px}.ball:before{content:'';position:absolute;left:12px;top:9px;width:10px;height:6px;border-radius:50%;background:#ffffff3d;transform:rotate(-35deg)}.tube-label{font-size:10px;font-variant-numeric:tabular-nums;letter-spacing:1px;color:#899181;line-height:1.2}.tube-button:hover:not(:disabled) .tube{border-color:#96a58f;background-color:#ecf0e333}.tube-button.selected .tube{border-color:var(--accent);box-shadow:0 0 0 5px #cf523b0d}.tube-button.selected .tube:before{border-color:var(--accent)}.tube-button.selected .ball:last-child{transform:translateY(-15px)}.tube-button.selected .tube-label{color:var(--accent);font-weight:700}.tube-button.hint-from .tube{border-color:#cf523b;background-color:#cf523b08}.tube-button.hint-from .tube:before{border-color:#cf523b}.tube-button.hint-to .tube{border-color:#6e8c50;background-color:#9cac6c18;box-shadow:0 0 0 5px #9cac6c12}.tube-button.hint-to .tube:before{border-color:#6e8c50}.tube-button.complete .tube{border-color:#a0b594;background-color:#b5c5a508}.tube-button.complete .tube:before{border-color:#a0b594}.tube-button.complete .tube-label{color:#688251}.skeleton-tube .tube{opacity:.48}.game-status{text-align:center;min-height:36px;max-width:470px;margin:24px auto 0;color:var(--muted);font-size:12px;line-height:1.6}.game-actions{display:flex;align-items:center;justify-content:space-between;padding:17px 28px 20px;border-top:1px solid #e6e8df;gap:12px}.move-actions{display:flex;gap:21px}.action-button{display:inline-flex;gap:8px;align-items:center;border:0;background:none;padding:7px 0;font-size:12px;font-weight:500}.action-button span{font-size:20px;font-weight:400;line-height:1}.action-button:hover:not(:disabled){color:var(--accent)}.no-rush{font-size:10px;color:#8a9184;white-space:nowrap}.puzzle-sidebar{padding-top:4px}.sidebar-heading{display:flex;align-items:center;justify-content:space-between;padding:0 0 20px;border-bottom:1px solid var(--line)}.sidebar-heading .eyebrow{font-size:9px}.experiment-number{font-family:Georgia,serif;font-size:11px;font-style:italic;color:#87907f}.stats{display:grid;grid-template-columns:1fr 1fr;padding:24px 0 13px}.stat{display:flex;flex-direction:column;gap:6px}.stat-label{font-size:11px;color:var(--muted)}.stat strong{font-family:'Manrope',sans-serif;font-weight:500;font-size:40px;letter-spacing:-2px;font-variant-numeric:tabular-nums;line-height:1.1}.stat+.stat{padding-left:20px;border-left:1px solid var(--line)}.puzzle-meta{font-size:10px;line-height:1.7;color:#7d8774;margin:0 0 24px}.rule-note{display:flex;gap:14px;border-top:1px solid var(--line);padding:23px 0;color:#687160}.rule-note p{font-size:12px;line-height:1.9;margin:0}.rule-icon{font-size:25px;color:#b27659;font-weight:400;line-height:1.3}.puzzle-identity{border-top:1px solid var(--line);padding:22px 0 17px;display:flex;flex-direction:column;align-items:start;gap:9px}.small-label{font-size:8px;letter-spacing:1.3px;color:#808977;font-weight:700}.seed-label{font-family:ui-monospace,Consolas,monospace;font-size:12px;font-weight:500;overflow-wrap:anywhere;max-width:100%}.share-button{font-size:11px;padding:2px 0;color:#788171}.share-button span{font-size:15px}.sidebar-links{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 0}.sidebar-button{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;border:0;background:none;padding:12px 0;font-size:11px}.sidebar-button:hover{color:var(--accent)}.sidebar-button>span:last-child{font-size:18px;font-weight:400;color:#839077}.completed-note{display:flex;align-items:center;gap:8px;font-size:9px;line-height:1.6;color:#7d8774;margin-top:22px}.completed-note strong{font-weight:550}.completion-mark{font-size:13px;color:#6f845a}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:42px;padding:22px 0 28px;border-top:1px solid var(--line);font-size:9px;letter-spacing:.15px;color:#8b9285}.site-footer>span:first-child{font-size:8px;letter-spacing:1.4px;font-weight:550}.footer-version{font-family:ui-monospace,monospace}.win-panel{padding:24px 28px;background:#edf2e3;display:flex;align-items:center;gap:20px;justify-content:space-between;border-top:1px solid #d6dfcb}.win-panel h2{font-family:'Manrope',sans-serif;font-weight:550;font-size:23px;letter-spacing:-.8px;margin:9px 0 7px}.win-panel .eyebrow{font-size:8px;color:#698155}.win-panel p:last-child{font-size:12px;line-height:1.6;color:#6b775f;margin:0}.solver-panel{margin-top:30px;padding:30px;border:1px solid var(--line);border-radius:12px;background:#eceee5}.solver-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.solver-heading h2{font-family:'Manrope',sans-serif;letter-spacing:-1px;font-size:28px;font-weight:550;margin:10px 0 12px}.solver-tag{border:1px solid #cbd4c1;font-size:8px;letter-spacing:1px;padding:7px 9px;border-radius:4px;white-space:nowrap}.solver-panel>p{font-size:12px;line-height:1.6;color:#717c68;margin-bottom:18px}.solver-controls{display:flex;align-items:center;gap:22px}.secondary-button{background:var(--surface);border:1px solid #bac5b0;border-radius:6px;padding:10px 14px;font-size:12px;display:flex;align-items:center;gap:13px}.secondary-button:hover{border-color:#728260}.solution-steps{display:flex;flex-wrap:wrap;gap:8px;list-style-position:inside;padding:0;margin:24px 0 0}.solution-steps li{font-size:11px;line-height:1.7;border:1px solid #d5dccd;padding:7px 10px;border-radius:5px;background:#f5f6ef;white-space:nowrap}.solution-steps li::marker{color:#8c9783;font-size:9px}.solution-steps li.active,.solution-steps li.current{border-color:#b57054;background:#f9f1e9}.solution-steps li.done{opacity:.4}.loading-overlay{position:absolute;inset:0;background:#fcfcf7ed;z-index:20;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(3px)}.loading-card{text-align:center;max-width:320px;padding:24px}.loading-card h2{font-family:'Manrope',sans-serif;font-size:24px;letter-spacing:-.8px;font-weight:550;margin:20px 0 12px}.loading-card p{font-size:12px;line-height:1.7;color:var(--muted)}.loading-card .text-button{color:var(--muted);text-decoration:underline;text-underline-offset:4px}.loading-orbs{display:flex;gap:9px;justify-content:center}.loading-orbs i{width:16px;height:16px;border-radius:50%;background:#d87860;animation:bob 1s ease-in-out infinite}.loading-orbs i:nth-child(2){background:#b3c785;animation-delay:.15s}.loading-orbs i:nth-child(3){background:#7facca;animation-delay:.3s}@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}.help-dialog{border:1px solid #d5dbcd;border-radius:16px;max-width:460px;width:calc(100% - 32px);background:var(--surface);padding:28px;color:var(--ink);box-shadow:0 15px 70px #17252433}.help-dialog::backdrop{background:#17252470;backdrop-filter:blur(4px)}.dialog-top{display:flex;align-items:center;justify-content:space-between}.icon-button{border:0;background:none;font-size:27px;font-weight:400;line-height:1;padding:4px 8px}.help-dialog h2{font-family:'Manrope',sans-serif;font-size:31px;font-weight:550;letter-spacing:-1.2px;line-height:1.2;margin:22px 0 28px}.instructions{list-style:none;padding:0;margin:0}.instructions li{display:flex;gap:18px;padding:17px 0;border-top:1px solid #e2e6db}.instructions li>span{font-family:ui-monospace,monospace;font-size:10px;color:#b17b61;padding-top:4px}.instructions p{font-size:13px;line-height:1.8;margin:0;color:#65715e}.instructions strong{font-weight:600;color:#35442d}.help-footnote{background:#edf1e5;border-radius:8px;padding:17px;margin-top:16px}.help-footnote p{font-size:12px;color:#6d7a61;line-height:1.8;margin:0}.help-footnote .keyboard-note{font-size:10px;margin-top:10px;color:#8b967f}

@media(min-width:1450px){.site-shell{padding-top:12px}.introduction{padding-top:56px;padding-bottom:42px}.board-wrap{padding-top:52px;padding-bottom:25px}.site-header{height:105px}}
@media(max-width:1050px){.site-shell{padding:0 32px}.game-layout{grid-template-columns:minmax(0,1fr) 205px;gap:25px}.play-toolbar{padding:20px}.board-wrap{padding:32px 18px 16px}.tube{width:62px;height:224px;gap:7px;padding:11px 5px;--ball-size:44px}.board{gap:15px 6px;min-height:260px}.game-actions{padding:16px 20px}.no-rush{display:none}.mode-control{gap:9px}.mode-control label{font-size:7px}.primary-button{padding:11px 12px}.rule-note{padding:20px 0}.stats{padding-top:21px}}
@media(max-width:820px){.site-shell{max-width:680px;padding:0 25px}.site-header{height:82px}.header-right{gap:20px}.help-button{font-size:0;gap:0}.help-button span{font-size:22px}.wordmark{font-size:21px}.game-layout{grid-template-columns:1fr;gap:28px}.introduction{padding:34px 0 28px}h1{font-size:56px}.intro-note{display:none}.board{gap:18px 10px}.tube{width:68px;height:238px;--ball-size:47px}.board-wrap{padding:37px 25px 20px}.play-toolbar{padding:21px 25px}.mode-control label{font-size:8px}.mode-control{gap:15px}.game-actions{padding:17px 25px}.no-rush{display:inline}.puzzle-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding-top:0}.sidebar-heading{grid-column:1/-1;padding-bottom:17px}.stats{grid-column:1;grid-row:2;align-self:start}.puzzle-meta{grid-column:1;grid-row:3;margin-bottom:15px}.rule-note{display:none}.puzzle-identity{grid-column:2;grid-row:2 / 4;border-top:0;border-left:1px solid var(--line);padding:22px 0 0 24px;align-self:stretch}.sidebar-links{grid-column:1/-1;display:flex;gap:28px}.sidebar-button{width:50%;padding:12px 0}.completed-note{grid-column:1/-1;margin-top:14px}.site-footer{margin-top:28px;padding-bottom:24px}.site-footer>span:nth-child(2){display:none}.solver-panel{margin-top:25px}}
@media(max-width:560px){:root{--ball-size:44px}.site-shell{padding:0 18px}.site-header{height:73px}.brand-mark{width:24px;height:24px;font-size:19px}.brand-mark span{font-size:11px}.wordmark{font-size:19px;gap:7px}.wordmark-dot{margin-left:-7px}.header-right{gap:15px}.lab-label{font-size:7px;letter-spacing:1px;padding:7px}.lab-label span{margin-left:5px}.help-button span{font-size:20px}.introduction{padding:29px 0 25px}.eyebrow{font-size:8px;letter-spacing:1.45px}h1{font-size:47px;letter-spacing:-2.6px;margin:13px 0 9px}.subtitle{font-size:15px}.play-card{border-radius:12px}.play-toolbar{padding:16px}.mode-control{display:block}.mode-control label{display:block;font-size:7px;letter-spacing:1.3px;margin-bottom:1px}.mode-control select{font-size:12px;padding-top:4px;padding-bottom:3px}.primary-button{font-size:11px;padding:11px 13px}.board-wrap{padding:28px 17px 13px}.board,.board:has(.tube-button:nth-child(7)){grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 18px;min-height:0;max-width:330px;margin:0 auto}.tube-button{gap:10px;padding-top:4px}.tube{width:66px;height:220px;gap:6px;padding:10px 7px;--ball-size:44px;border-bottom-left-radius:27px;border-bottom-right-radius:27px}.tube-label{font-size:9px}.game-status{font-size:11px;min-height:33px;margin-top:20px;max-width:270px}.game-actions{padding:13px 16px;justify-content:center}.move-actions{justify-content:space-between;width:100%;gap:16px;max-width:300px}.action-button{font-size:11px;gap:7px}.action-button span{font-size:19px}.no-rush{display:none}.puzzle-sidebar{gap:0 20px}.sidebar-heading{padding-bottom:14px}.stats{padding-top:18px;padding-bottom:10px}.stat strong{font-size:33px}.stat-label{font-size:10px}.stat+.stat{padding-left:13px}.puzzle-meta{font-size:9px;line-height:1.7}.puzzle-identity{padding-left:18px;padding-top:20px;gap:9px}.seed-label{font-size:10px}.small-label{font-size:7px}.share-button{font-size:10px;gap:8px}.sidebar-links{gap:20px}.sidebar-button{font-size:10px}.completed-note{font-size:8px}.site-footer>span:first-child{font-size:7px;letter-spacing:1.2px}.site-footer{font-size:8px}.win-panel{padding:22px 17px;display:block;text-align:center}.win-panel .eyebrow{justify-content:center}.win-panel h2{font-size:22px}.win-panel .primary-button{margin-top:18px}.solver-panel{padding:22px 18px}.solver-heading h2{font-size:25px;letter-spacing:-.8px}.solver-tag{display:none}.solver-controls{gap:18px}.secondary-button{font-size:11px;padding:10px 12px}.solver-controls .text-button{font-size:11px}.solution-steps{gap:6px}.solution-steps li{padding:6px 8px;font-size:10px}.help-dialog{padding:22px}.help-dialog h2{font-size:28px}.instructions p{font-size:12px}}
@media(max-width:359px){.site-shell{padding:0 12px}.lab-label{display:none}h1{font-size:44px}.board,.board:has(.tube-button:nth-child(7)){column-gap:10px}.board-wrap{padding-left:12px;padding-right:12px}.tube{width:62px}.play-toolbar{padding:15px 13px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the complete board and its controls together on a phone. */
@media(max-width:560px){
  .site-header{height:60px}.introduction{padding:20px 0}.introduction h1{font-size:40px;margin-top:10px;margin-bottom:7px}.subtitle{font-size:14px}
  .board-wrap{padding:22px 14px 10px}.board,.board:has(.tube-button:nth-child(7)){row-gap:16px}
  .tube{width:58px;height:174px;--ball-size:32px;gap:6px;padding:10px 7px;border-radius:0 0 25px 25px}
  .ball{font-size:10px}.ball:before{left:8px;top:6px;width:7px;height:4px}
  .board:has(.tube-button:nth-child(7)){grid-template-columns:repeat(4,minmax(0,1fr));column-gap:9px}
  .game-status{margin-top:15px}.action-button{min-height:40px}.help-button{min-width:32px;min-height:40px;justify-content:center}
}
