.tower-of-hanoi_root__vmg79{--th-d1:color-mix(in srgb,var(--thinking) 72%,var(--stage));--th-d2:color-mix(in srgb,var(--thinking) 95%,var(--stage));--th-d3:color-mix(in srgb,var(--thinking) 55%,var(--white));--th-d4:var(--white);--th-rod:var(--line-strong);--th-target:var(--accent);--th-lifted:var(--text);--th-reject:var(--bad);--th-panel:var(--stage-bg-soft);--th-rule:var(--line);--th-col-h:300px;--th-lift-h:40px;--th-rod-w:8px;--th-base-h:12px;--th-base-target-h:16px;--th-label-h:16px;--th-gutter:4px;--th-disk-h:28px;--th-w1:50px;--th-w2:68px;--th-w3:86px;--th-w4:104px;--th-board-w:100%;--fs-score:48px;--ctl-accent:var(--accent);--ctl-accent-deep:var(--pulse-deep);--ctl-accent-soft:var(--pulse-wash);--ctl-ink:var(--accent-ink);--ctl-surface:var(--surface-2);--fb-accent:var(--accent);--fb-warn:var(--warn);--fb-hair:var(--line);display:flex;flex-direction:column;align-items:center;gap:0;min-width:0;min-height:0;isolation:isolate;padding:0 3px;touch-action:manipulation;overscroll-behavior:contain;-webkit-tap-highlight-color:transparent;-moz-user-select:none;user-select:none;-webkit-user-select:none}.tower-of-hanoi_colLeft__fPTPK,.tower-of-hanoi_colMid__Xh6sj,.tower-of-hanoi_colRight__oirHh{display:contents}.tower-of-hanoi_status__QxcBX{display:flex;align-items:baseline;gap:8px;width:100%;min-height:40px;margin:0;padding-top:12px;font-family:var(--font-mono);font-size:15px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_statusMoves__H1MEp{min-width:0;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_statusMin__3Vyd_{flex:1 1 auto;min-width:0;font-size:13px;color:var(--muted)}.tower-of-hanoi_statusClock__nmks6,.tower-of-hanoi_statusMin__3Vyd_{white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_statusClock__nmks6{flex:none}.tower-of-hanoi_statusDot__wi_cw{flex:none;width:3px;height:3px;border-radius:50%;background:var(--line-strong)}.tower-of-hanoi_board__6giGz{display:flex;align-items:flex-end;gap:0;width:var(--th-board-w);height:var(--th-col-h);margin-top:8px;touch-action:none;overscroll-behavior:contain}.tower-of-hanoi_peg___okoD{position:relative;flex:1 1;min-width:0;height:var(--th-col-h);padding:0 var(--th-gutter);border:1px solid transparent;border-radius:var(--r-md);background:color-mix(in srgb,var(--surface) 55%,transparent);color:inherit;cursor:pointer;transition:transform var(--feedback-ms) ease-out}.tower-of-hanoi_peg___okoD:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tower-of-hanoi_peg___okoD[data-reject=true]{animation:tower-of-hanoi_th-refuse__l8XL9 var(--feedback-ms) linear}.tower-of-hanoi_pegInner__3kdge{position:absolute;inset:0 var(--th-gutter);display:block}.tower-of-hanoi_rod__n7Veo{left:50%;bottom:calc(var(--th-label-h) + var(--th-base-h));width:var(--th-rod-w);height:calc(var(--th-col-h) - var(--th-lift-h) - var(--th-base-h) - var(--th-label-h));margin-left:calc(var(--th-rod-w) / -2)}.tower-of-hanoi_base__Ndzy_,.tower-of-hanoi_rod__n7Veo{position:absolute;border-radius:4px;background:var(--th-rod)}.tower-of-hanoi_base__Ndzy_{left:0;right:0;bottom:var(--th-label-h);height:var(--th-base-h);transition:height var(--feedback-ms) ease-out,border-color var(--feedback-ms) ease-out}.tower-of-hanoi_peg___okoD[data-holding=true]{border-color:var(--th-rod)}.tower-of-hanoi_peg___okoD[data-target=true] .tower-of-hanoi_base__Ndzy_{height:var(--th-base-target-h);border:2px solid var(--th-target)}.tower-of-hanoi_peg___okoD[data-holding=true] .tower-of-hanoi_base__Ndzy_{height:var(--th-base-target-h)}.tower-of-hanoi_peg___okoD[data-reject=true] .tower-of-hanoi_base__Ndzy_{border:2px solid var(--th-reject)}.tower-of-hanoi_stack__7zPRF{position:absolute;left:0;right:0;bottom:calc(var(--th-label-h) + var(--th-base-h));display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.tower-of-hanoi_disk__88nbs{display:block;height:var(--th-disk-h);border-radius:6px;background:var(--th-d1);transition:transform var(--feedback-ms) ease-out,outline-color var(--feedback-ms) ease-out}.tower-of-hanoi_board__6giGz[data-disks="4"] .tower-of-hanoi_disk__88nbs[data-disk="0"]{width:var(--th-w1);background:var(--th-d1)}.tower-of-hanoi_board__6giGz[data-disks="4"] .tower-of-hanoi_disk__88nbs[data-disk="1"]{width:var(--th-w2);background:var(--th-d2)}.tower-of-hanoi_board__6giGz[data-disks="4"] .tower-of-hanoi_disk__88nbs[data-disk="2"]{width:var(--th-w3);background:var(--th-d3)}.tower-of-hanoi_board__6giGz[data-disks="4"] .tower-of-hanoi_disk__88nbs[data-disk="3"]{width:var(--th-w4);background:var(--th-d4)}.tower-of-hanoi_board__6giGz[data-disks="3"] .tower-of-hanoi_disk__88nbs[data-disk="0"]{width:var(--th-w2);background:var(--th-d2)}.tower-of-hanoi_board__6giGz[data-disks="3"] .tower-of-hanoi_disk__88nbs[data-disk="1"]{width:var(--th-w3);background:var(--th-d3)}.tower-of-hanoi_board__6giGz[data-disks="3"] .tower-of-hanoi_disk__88nbs[data-disk="2"]{width:var(--th-w4);background:var(--th-d4)}.tower-of-hanoi_disk__88nbs[data-lifted=true]{transform:translateY(-4px);outline:3px solid var(--th-lifted);outline-offset:-3px}.tower-of-hanoi_peg___okoD[data-landed=true] .tower-of-hanoi_stack__7zPRF .tower-of-hanoi_disk__88nbs:first-child{outline:3px solid var(--th-target);outline-offset:-3px}.tower-of-hanoi_pegLabel___Zwce{position:absolute;left:0;right:0;bottom:0;height:var(--th-label-h);display:flex;align-items:center;justify-content:center;font-size:11px;line-height:1;color:var(--muted)}.tower-of-hanoi_peg___okoD[data-target=true] .tower-of-hanoi_pegLabel___Zwce{color:var(--th-target)}@keyframes tower-of-hanoi_th-refuse__l8XL9{0%{transform:translateX(0)}30%{transform:translateX(-4px)}70%{transform:translateX(4px)}to{transform:translateX(0)}}.tower-of-hanoi_ref__yLjzJ{display:flex;align-items:baseline;gap:8px;width:100%;min-height:28px;margin:8px 0 0;font-size:15px;color:var(--text-2)}.tower-of-hanoi_refLeft__qCZgS,.tower-of-hanoi_ref__yLjzJ{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_refLeft__qCZgS{margin-left:auto;flex:none;color:var(--text)}.tower-of-hanoi_reason__Mmaq6{width:100%;min-height:24px;margin:8px 0 0}.tower-of-hanoi_quit__l7mUY{width:160px;min-height:44px;margin:12px 0 0}.tower-of-hanoi_keyboardHint__08oF3{display:none;margin:8px 0 0;font-size:13px;color:var(--muted)}.tower-of-hanoi_panel__7_0rs{display:flex;flex-direction:column;align-items:stretch;width:100%;margin:0}.tower-of-hanoi_lead__E0n8y{margin:0;font-size:20px;line-height:1.3;color:var(--text);overflow-wrap:anywhere}.tower-of-hanoi_purpose__WdU91{display:flex;flex-direction:column;gap:2px;margin:8px 0 0;font-size:12px;line-height:1.45;color:var(--muted)}.tower-of-hanoi_purposeLimit__RYmeP{color:var(--text-dim)}.tower-of-hanoi_rule__yypEt{width:100%;height:0;margin:8px 0;border:0;border-top:1px solid var(--th-rule)}.tower-of-hanoi_rules__z01P4{margin:0;padding-left:20px;min-height:72px;font-size:15px;line-height:1.4;color:var(--text-2);overflow-wrap:anywhere}.tower-of-hanoi_rules__z01P4 li+li{margin-top:4px}.tower-of-hanoi_inputs__xUyAy{display:flex;flex-direction:column;gap:4px;margin:10px 0 0;padding:0;list-style:none;font-size:13px;line-height:1.4;color:var(--muted)}.tower-of-hanoi_inputs__xUyAy li{display:flex;align-items:flex-start;gap:8px}.tower-of-hanoi_inputIcon__sDVV6{flex:none;width:16px;height:16px;margin-top:2px;color:var(--line-strong)}.tower-of-hanoi_goalRow__Z1sLH{display:flex;align-items:center;gap:10px;width:100%}.tower-of-hanoi_goalMark__SAPhj{flex:none;width:72px;height:44px;color:var(--line-strong)}.tower-of-hanoi_goalMarkDisk__Z9sbp{fill:var(--th-target)}.tower-of-hanoi_goal__qxNjE{margin:0;font-size:13px;color:var(--text-2)}.tower-of-hanoi_plan__25g8M{display:flex;flex-direction:column;gap:2px;margin:10px 0 0;font-size:13px;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_planDerivation__VwGji{display:none;font-size:13px;color:var(--muted)}.tower-of-hanoi_bestLine__ZnTnt,.tower-of-hanoi_planRun__cfXUI{font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_bestLine__ZnTnt{margin:6px 0 0}.tower-of-hanoi_cta__rc_c0{width:100%;min-height:52px;margin-top:10px;font-size:16px}.tower-of-hanoi_textLink__7dp_J{min-height:44px;margin-top:8px}.tower-of-hanoi_genFailed__hWPWI{margin:16px 0 0;font-size:15px;color:var(--text)}.tower-of-hanoi_card__2ZBYk{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:var(--r-md);background:var(--th-panel)}.tower-of-hanoi_cardTitle__ALTP8{margin:0;font-size:20px;color:var(--text)}.tower-of-hanoi_cardLine__EnhW5{margin:0;font-size:15px;line-height:1.45;color:var(--text-2)}.tower-of-hanoi_cardNote__bdzVY{margin:4px 0 0;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_voidReason___tDhL{margin:4px 0 0;font-size:15px;line-height:1.45;color:var(--text-2);overflow-wrap:anywhere}.tower-of-hanoi_footNote__ct_v3{margin:12px 0 0;font-size:12px;color:var(--muted)}.tower-of-hanoi_scoreRow__1cpWr{display:flex;align-items:baseline;gap:8px;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_score__2iMim{font-family:var(--font-mono);font-size:var(--fs-score);font-weight:700;line-height:1.1;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_scoreUnit__ONU2d{font-size:20px;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_scoreNote__HqVAF{margin:4px 0 0;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_refLine__88vjl{display:flex;flex-direction:column;gap:2px;margin:0 0 16px;font-size:15px;line-height:1.45;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_refLineExtra__bOZof{color:var(--text-2)}.tower-of-hanoi_secondary__nKRKn{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px 8px;gap:4px 8px;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_secondary__nKRKn>div{display:flex;flex-direction:column;gap:2px;min-width:0}.tower-of-hanoi_secondary__nKRKn dt{font-size:12px;color:var(--muted)}.tower-of-hanoi_secondary__nKRKn dd{margin:0}.tower-of-hanoi_secValue__UBfWO{font-family:var(--font-mono);font-size:20px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_compare__1zJ0b{padding-left:10px;border-left:3px solid transparent}.tower-of-hanoi_compare__1zJ0b[data-record=true]{border-left-color:var(--accent)}.tower-of-hanoi_bestLineResult__5lewH{display:flex;flex-wrap:wrap;gap:8px;margin:0;font-size:13px;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_recordTag__bjmbf{color:var(--accent)}.tower-of-hanoi_lastLine__nCqYK{margin:2px 0 0;font-size:13px;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_sessionLine__G7i8E{margin:8px 0 0;padding-left:10px;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tower-of-hanoi_band__pwi3J{min-height:48px;margin:24px 0 0;font-size:15px;line-height:1.45;color:var(--text-2);overflow-wrap:anywhere}.tower-of-hanoi_reference__jgcXp{margin:8px 0 0;font-size:12px;color:var(--muted)}.tower-of-hanoi_compliance__DIKjI{margin:16px 0 0;font-size:12px;line-height:1.4;color:var(--text-dim)}.tower-of-hanoi_shareLink__H_kWg{margin:8px 0 0;font-size:12px;color:var(--text-2);word-break:break-all;-moz-user-select:text;user-select:text;-webkit-user-select:text}@media (max-width:380px){.tower-of-hanoi_root__vmg79{--th-col-h:264px;--th-lift-h:34px;--th-label-h:14px;--th-disk-h:24px;--th-w1:48px;--th-w2:64px;--th-w3:80px;--th-w4:96px;--fs-score:40px}.tower-of-hanoi_status__QxcBX{min-height:36px;padding-top:8px;font-size:13px}.tower-of-hanoi_lead__E0n8y{font-size:18px}.tower-of-hanoi_purpose__WdU91{font-size:11px}.tower-of-hanoi_rules__z01P4{min-height:78px;font-size:13px}.tower-of-hanoi_inputs__xUyAy{font-size:12px}.tower-of-hanoi_ref__yLjzJ{min-height:26px;font-size:13px}.tower-of-hanoi_reason__Mmaq6{min-height:22px}.tower-of-hanoi_cta__rc_c0{min-height:48px}.tower-of-hanoi_secValue__UBfWO{font-size:18px}}@media (max-width:380px) and (max-height:720px){.tower-of-hanoi_lead__E0n8y{font-size:15px;line-height:1.3}.tower-of-hanoi_purpose__WdU91{margin-top:4px;line-height:1.3}.tower-of-hanoi_rule__yypEt{display:none}.tower-of-hanoi_rules__z01P4{margin-top:6px;min-height:0;font-size:12px;line-height:1.35}.tower-of-hanoi_rules__z01P4 li+li{margin-top:2px}.tower-of-hanoi_inputs__xUyAy{gap:3px;margin-top:4px;font-size:11px;line-height:1.35}.tower-of-hanoi_inputIcon__sDVV6{width:14px;height:14px;margin-top:1px}.tower-of-hanoi_goalRow__Z1sLH{margin-top:4px;gap:8px}.tower-of-hanoi_goalMark__SAPhj{width:50px;height:30px}.tower-of-hanoi_goal__qxNjE{font-size:12px;line-height:1.3}.tower-of-hanoi_plan__25g8M{margin-top:4px;font-size:12px}.tower-of-hanoi_bestLine__ZnTnt{margin-top:3px;font-size:11px}.tower-of-hanoi_cta__rc_c0{min-height:46px;margin-top:6px;font-size:15px}}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_status__QxcBX{padding-right:var(--stage-exit-reserve)}@media (min-width:1024px){.tower-of-hanoi_root__vmg79{--fs-score:60px;--th-board-w:358px;padding-top:20px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79{padding-top:0}.tower-of-hanoi_panel__7_0rs,.tower-of-hanoi_reason__Mmaq6,.tower-of-hanoi_ref__yLjzJ,.tower-of-hanoi_status__QxcBX{width:min(100%,420px)}.tower-of-hanoi_keyboardHint__08oF3,.tower-of-hanoi_planDerivation__VwGji{display:block}}@media (orientation:landscape) and (max-height:520px){.game-stage[data-screen] .tower-of-hanoi_root__vmg79{--th-col-h:232px;--th-lift-h:28px;--th-label-h:14px;--th-disk-h:20px;--th-w1:50px;--th-w2:66px;--th-w3:82px;--th-w4:98px;--th-board-w:348px;--fs-score:36px;flex-direction:row;align-items:center;justify-content:center;column-gap:24px;padding-bottom:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colLeft__fPTPK{display:flex;flex:0 0 160px;flex-direction:column;align-items:flex-start;gap:8px;min-width:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colMid__Xh6sj{display:flex;flex:0 0 auto;align-items:center;justify-content:center}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colRight__oirHh{display:flex;flex:0 1 120px;flex-direction:column;justify-content:center;gap:8px;min-width:0;max-width:200px;width:auto}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colLeft__fPTPK>*,.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colMid__Xh6sj>*,.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_colRight__oirHh>*{flex:0 0 auto}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_status__QxcBX{flex-direction:column;align-items:flex-start;gap:2px;min-height:0;padding-top:0;padding-right:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_statusDot__wi_cw{display:none}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_ref__yLjzJ{flex-direction:column;align-items:flex-start;gap:0;min-height:0;margin:0;font-size:13px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_refLeft__qCZgS{margin-left:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_board__6giGz{margin:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_reason__Mmaq6{width:100%;margin:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_reason__Mmaq6>*{white-space:normal;overflow:visible}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_quit__l7mUY{width:100%;margin:0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=board] .tower-of-hanoi_keyboardHint__08oF3{display:block;margin:0;font-size:11px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel]{align-items:stretch}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_colMid__Xh6sj{display:flex;flex:1 1 auto;min-width:0;min-height:0;justify-content:center}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_colRight__oirHh{display:flex;flex:0 0 200px;flex-direction:column;justify-content:center}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_panel__7_0rs{width:100%;max-width:560px;max-height:100%;overflow-y:auto;overscroll-behavior:contain}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_lead__E0n8y{font-size:15px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_rules__z01P4{min-height:0;font-size:13px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_rule__yypEt{margin:10px 0}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_goalRow__Z1sLH,.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_inputs__xUyAy{display:none}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_band__pwi3J{min-height:0;margin-top:12px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_cta__rc_c0{position:-webkit-sticky;position:sticky;bottom:0;min-height:48px;margin-top:10px}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_shareLink__H_kWg,.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_textLink__7dp_J{display:none}.game-stage[data-screen] .tower-of-hanoi_root__vmg79[data-stage=panel] .tower-of-hanoi_reason__Mmaq6{width:100%;margin:0}}@media (prefers-reduced-motion:reduce){.tower-of-hanoi_peg___okoD[data-reject=true]{animation:none}.tower-of-hanoi_peg___okoD[data-reject=true] .tower-of-hanoi_base__Ndzy_{border-width:4px}}