/* Mobile interaction layer. Desktop geometry and puzzle engines stay unchanged. */
.mobile-coach-dock,.mobile-step-summary,.mobile-coach-status,.mobile-gesture-bar{display:none}
.auto-advance{display:flex;align-items:center;gap:10px;padding:8px 24px;font-size:13px;color:var(--muted)}
.auto-advance input{width:20px;height:20px;accent-color:var(--green)}
.selection-status{margin:0;padding:4px 24px;font-size:13px;color:var(--ink);min-height:30px;font-variant-numeric:tabular-nums}
.cube-view-host[data-touch-mode="rotate"],.cube-view-host[data-touch-mode="rotate"] .cube-orbit{touch-action:pinch-zoom}
.cube-view-host[data-touch-mode="scroll"],.cube-view-host[data-touch-mode="scroll"] .cube-orbit{touch-action:pan-y pinch-zoom}
.mobile-coach-dock[hidden],.mobile-step-summary[hidden],.mobile-coach-status[hidden]{display:none!important}
@media(max-width:900px){
  :root{--mobile-gutter:16px;--mobile-dock-height:96px}
  html{scroll-padding-bottom:calc(var(--mobile-dock-height) + env(safe-area-inset-bottom,0px) + 16px)}
  body{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  .shell{width:auto;max-width:none;margin-left:max(calc((100% - 720px)/2),var(--mobile-gutter),env(safe-area-inset-left,0px));margin-right:max(calc((100% - 720px)/2),var(--mobile-gutter),env(safe-area-inset-right,0px))}
  .header-inner{height:auto;min-height:74px;gap:12px 20px;padding-block:12px}
  .primary-nav{gap:20px}
  .primary-nav a,.language-link,.footer-top nav a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;font-size:13px}
  .language-link{padding:8px 12px}
  .page-heading{padding-block:20px}
  .page-heading h1{font-size:32px;line-height:1.28;letter-spacing:-1px}
  .page-heading p{font-size:14px;line-height:1.7;margin-top:10px}
  .page-heading .eyebrow,.breadcrumbs{font-size:11px}
  .coach-grid{grid-template-columns:minmax(0,1fr);gap:20px}
  cube-coach,sudoku-coach{padding-bottom:calc(var(--mobile-dock-height) + env(safe-area-inset-bottom,0px));min-width:0;scroll-margin-top:12px}
  .workspace,.coach-aside{min-width:0}
  .workspace{border-radius:16px}
  .workspace-heading{padding:14px 16px;flex-wrap:wrap;gap:6px 12px}
  .workspace-heading .eyebrow,.workspace-state{font-size:12px;letter-spacing:.5px}
  .button,.text-button,.segmented button,.face-buttons button,.stage-list button,summary{min-height:44px;touch-action:manipulation}
  .button{font-size:14px;padding:10px 14px;gap:12px}
  .text-button{font-size:13px;padding:10px 4px}
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),select,textarea{font-size:16px!important}
  input[type="range"]{min-height:44px;width:100%;accent-color:var(--green);touch-action:pan-y}
  .microcopy,.quiet-note,.instruction-card>p,.small-card>p,.reason-box p,.check-note,.solver-reading p,.faq-section details p{font-size:14px!important;line-height:1.75}
  .instruction-card{padding:22px;scroll-margin-top:16px;scroll-margin-bottom:calc(var(--mobile-dock-height) + 24px)}
  .instruction-card h2{font-size:25px}
  .step-kicker,.tiny-label{font-size:11px}
  .mode-choice b{font-size:14px}.mode-choice small{font-size:13px}
  .mode-choice label{min-height:52px}
  .mode-choice input,.toggle input{width:20px;height:20px;flex-shrink:0;accent-color:var(--green)}
  .split-actions,.center-actions{gap:10px;flex-wrap:wrap}
  .split-actions>*{min-width:0}
  .playback{padding:12px 16px}
  .playback-buttons{gap:8px}
  .playback-buttons .button{font-size:13px;min-height:44px;gap:6px}
  .playback-options{flex-wrap:wrap;gap:8px 12px}
  .playback-options .text-button,.playback-options label{font-size:13px}
  .playback-options select{min-height:44px;max-width:100%}
  .timeline-label{font-size:12px}
  .mobile-coach-status{display:block;margin:0;padding:10px 16px;font-size:13px;line-height:1.6;background:var(--amber);border-bottom:1px solid var(--line);overflow-wrap:anywhere}
  .mobile-step-summary{display:block;margin:0;padding:16px;border-top:1px solid var(--line);background:#f5f7ed;overflow-wrap:anywhere}
  .mobile-step-summary h2{font-size:19px;line-height:1.4;margin:5px 0 8px}
  .mobile-step-summary>p{font-size:14px;line-height:1.7;margin:8px 0}
  .mobile-step-summary .mobile-current-move{margin:10px 0;gap:12px}
  .mobile-step-summary .mobile-current-move strong{font-size:30px}
  .mobile-step-summary .mobile-current-move p{font-size:14px;line-height:1.6}
  .mobile-step-summary .mobile-reason-box{margin:12px 0;padding:12px}
  .mobile-step-summary .mobile-formula{margin:10px 0;display:flex;flex-wrap:wrap;gap:5px}
  .mobile-step-summary .mobile-formula>span{font-size:15px;padding:6px 9px;min-width:30px;text-align:center}
  .mobile-step-summary .mobile-action-note{font-size:14px;margin-top:10px}
  .mobile-coach-dock{display:block;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:7px max(12px,env(safe-area-inset-right,0px)) max(10px,env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left,0px));background:var(--white);border-top:1px solid var(--line);box-shadow:0 -6px 24px #183f3912}
  .mobile-dock-progress{display:block;max-width:680px;margin:0 auto 5px;font-size:11px;line-height:1.4;color:var(--muted);font-variant-numeric:tabular-nums}
  .mobile-dock-buttons{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px;max-width:680px;margin:auto}
  .mobile-dock-buttons .button{min-height:46px;font-size:14px;padding-inline:6px;white-space:normal}
  .mobile-colorbar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;padding:10px 12px;background:var(--white);border-bottom:1px solid var(--line)}
  .mobile-colorbar button{width:auto;height:auto;min-width:0;min-height:58px;border:1px solid var(--line);border-radius:10px;background:var(--white)!important;color:var(--ink);padding:5px 2px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;touch-action:manipulation}
  .mobile-colorbar button.selected{outline:2px solid var(--green);outline-offset:0;background:var(--soft)!important}
  .mobile-colorbar .color-dot{width:20px;height:20px;border-radius:50%;background:var(--swatch);border:1px solid #183f3966;display:block}
  .mobile-colorbar .color-count{font-size:11px;line-height:1.2;font-variant-numeric:tabular-nums}
  .mobile-colorbar .over-count .color-count{color:var(--danger);font-weight:800}
  .mobile-gesture-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--white)}
  .mobile-gesture-bar>span{font-size:11px;line-height:1.45;color:var(--muted)}
  .mobile-gesture-bar button{flex-shrink:0;font-size:12px}
  .cube-stage{height:clamp(250px,39svh,360px)}
  .cube-view-host{inset:0 18px}
  .cube-orbit{transform:none}
  .cube-object{top:46%}
  .stage-caption{font-size:11px;bottom:14px;left:16px;right:16px;text-align:center;pointer-events:none}
  .view-toolbar{padding:6px 12px;display:flex;flex-wrap:wrap;gap:6px 12px}
  .view-toolbar>.text-button{font-size:13px}
  .face-buttons{display:grid;grid-template-columns:repeat(6,1fr);width:100%;gap:6px}
  .face-buttons button{width:auto;height:44px;font-size:14px;border-radius:8px}
  .cube-net-details,.grid-import{padding:10px 16px}
  .cube-net-details summary,.grid-import summary{display:flex;align-items:center;justify-content:space-between;font-size:14px}
  .cube-net-details .microcopy{margin:10px 0}
  .cube-net{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:560px;margin:16px auto}
  .cube-net .net-face{grid-area:auto!important;min-width:0}
  .net-face>span{font-size:13px;display:block;margin-bottom:6px}
  .net-face>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}
  .net-face button{width:100%;min-height:38px;aspect-ratio:1;font-size:14px;touch-action:manipulation}
  .color-choice{min-height:80px}.color-choice b{font-size:12px}.color-choice small{font-size:11px}
  .sudoku-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 12px;padding:12px 14px}
  .segmented{display:flex;min-width:0;gap:0}
  .segmented button{font-size:13px;padding:8px 10px;white-space:normal}
  .toggle{display:flex;align-items:center;font-size:13px;min-height:44px;gap:6px}
  .sudoku-board-wrap{padding:0 12px;max-width:540px;margin:auto}
  .sudoku-board{width:100%;max-width:100%;aspect-ratio:1;touch-action:manipulation}
  .sudoku-cell{min-width:0;min-height:0;padding:0;touch-action:manipulation}
  .cell-value{font-size:clamp(21px,6vw,32px)}
  .cell-notes{font-size:clamp(8px,2.35vw,12px);padding:2px;line-height:1.05}
  .board-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 16px;padding:12px;font-size:11px}
  .number-pad{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:8px 12px;max-width:540px;margin:auto}
  .number-pad button{min-height:46px;height:46px;font-size:23px;touch-action:manipulation}
  .selection-status{padding:5px 14px;font-size:13px;line-height:1.5}
  .auto-advance{padding:4px 14px 8px;font-size:13px;min-height:44px}
  .board-help{padding:8px 14px 14px;font-size:12px;line-height:1.65}
  sudoku-coach[data-mode="lesson"] .number-pad,sudoku-coach[data-mode="lesson"] .auto-advance,sudoku-coach[data-mode="lesson"] .selection-status{display:none}
  .grid-import>label{display:block;font-size:13px;margin:8px 0}
  .grid-import textarea{width:100%;max-width:100%;min-height:100px;padding:10px;line-height:1.5;resize:vertical;scroll-margin-bottom:130px}
  .example-picker label{font-size:13px}.example-picker select{min-height:44px;width:100%;max-width:100%}
  .solver-reading{grid-template-columns:1fr;gap:24px;margin-top:24px;padding-top:24px}
  .solver-reading h2,.faq-section h2{font-size:24px}
  .faq-section summary{font-size:14px;padding-block:12px}
  .prose{font-size:15px;line-height:1.85}
  .prose table{display:block;max-width:100%;overflow-x:auto}
  .prose pre{max-width:100%;overflow-x:auto}
  .prose a,.reason-box,.check-note,.action-note{overflow-wrap:anywhere}
  .info-page h1,.guide-page h1{font-size:32px;line-height:1.3;overflow-wrap:anywhere}
}
@media(max-width:650px){
  .primary-nav{order:3;justify-content:space-between;gap:10px;margin-top:0;font-size:13px}
  .primary-nav a{padding:8px 0}
  .hero-heading h1{font-size:clamp(36px,10.8vw,49px);line-height:1.14}
  html[lang="zh-CN"] .hero-heading h1{font-size:clamp(32px,9.5vw,40px);line-height:1.35}
  .home-hero{gap:22px;padding-block:24px 28px}
  .hero-description,.tool-card p,.method-row p,.section-heading>p{font-size:14px;line-height:1.75}
  .hero-promises{font-size:12px;flex-wrap:wrap;gap:7px 16px}
  .hero-actions{gap:14px}.hero-actions>a:last-child:not(.button){font-size:14px;min-height:44px;display:inline-flex;align-items:center}
  .hero-art{height:265px}.hero-cube-stage{top:12px;right:-4px;transform:scale(.75)}
  .hero-sudoku{width:130px;bottom:16px;left:18px}.hero-sudoku-grid span{height:29px}
  .hero-art-note{right:16px;bottom:16px}
  .tool-card{padding:22px}.tool-card h3{font-size:24px}.tool-card-bottom{font-size:12px}
  .footer-top p,.footer-bottom{font-size:12px;line-height:1.7}.footer-top nav{flex-wrap:wrap;gap:8px 20px}
}
@media(max-width:400px){
  :root{--mobile-gutter:12px}
  .mobile-colorbar{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:10px}
  .mobile-colorbar button{min-height:44px;flex-direction:row;gap:6px}
  .mobile-colorbar .color-count{font-size:12px}
  .cube-orbit{transform:scale(.88)}
  .cube-stage{height:255px}
  .mobile-gesture-bar{padding-inline:10px;gap:6px}
  .page-heading h1{font-size:29px}.page-heading p{font-size:14px}
  .cube-net-details,.grid-import{padding-inline:12px}
  .cube-net{gap:10px}.sudoku-board-wrap{padding-inline:8px}
  .sudoku-toolbar{padding:10px;gap:4px 8px}.segmented button{font-size:12px;padding-inline:8px}
  .playback-options label{width:100%;display:flex;align-items:center;gap:12px}
  .mobile-dock-buttons .button{font-size:13px}
  .color-palette{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
}
@media(min-width:760px) and (max-width:900px) and (max-height:500px){
  .coach-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px}
  .cube-stage{height:250px}.cube-orbit{transform:scale(.84)}
  .mobile-step-summary{display:none}.mobile-colorbar{grid-template-columns:repeat(4,minmax(0,1fr))}
  .mobile-colorbar button{min-height:44px;flex-direction:row;gap:6px}
  .instruction-card{padding:18px}.instruction-card h2{font-size:23px}
  .color-palette{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce){.mobile-coach-dock,.mobile-step-summary{scroll-behavior:auto;transition:none}}

@media(max-width:900px){.mobile-formula .mobile-current{background:var(--green);color:white;border-radius:5px}.mobile-formula .mobile-past{opacity:.55}.mobile-assumption-warning{padding:8px;background:var(--amber);font-size:12px;font-weight:700}.mobile-step-kicker{font-size:11px;color:var(--muted)}.mobile-current-move{display:flex;align-items:center}.mobile-reason-box{background:var(--white);border:1px solid var(--line);border-radius:8px}.mobile-reason-box>span{font-size:12px;font-weight:700}.mobile-reason-box p{font-size:14px;line-height:1.75;margin-top:5px}}
@media(max-width:340px){.face-buttons{grid-template-columns:repeat(3,minmax(0,1fr))}}
