/* Entirely gated: desktop, including narrow mouse windows, uses original CSS. */
html.phone,html.phone body{height:100%;overflow:hidden;overscroll-behavior:none}
.phone .site-shell{width:var(--phone-width,100%);height:var(--phone-height,100dvh);max-width:none;margin:0;padding:max(2px,env(safe-area-inset-top)) max(4px,env(safe-area-inset-right)) max(2px,env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-left));display:flex;flex-direction:column;gap:3px}
.phone .masthead,.phone .site-footer,.phone .puzzle-heading,.phone .panel-heading,.phone .entry-guidance,.phone .quiet-note{display:none}
.phone .phone-header{display:flex;gap:6px;align-items:center;height:44px;flex:none}
.phone .phone-title{flex:1;min-width:0;display:flex;align-items:center;gap:8px}
.phone #puzzle-title{font-size:17px;line-height:1.1}.phone #timer{font-size:16px;white-space:nowrap}
.phone .phone-header button{min-height:44px;padding:5px 9px;font-size:13px}
.phone .play-layout{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;max-width:none;margin:0;gap:3px;align-items:stretch}
.phone .puzzle-area{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;gap:2px}
.phone .phone-board-space{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.phone .board-frame{padding:2px;box-shadow:none;flex:none;max-width:100%;max-height:100%}
.phone .board{width:100%;height:100%;aspect-ratio:1}
.phone .frame-corner{display:none}
.phone .board .cell{font-size:clamp(18px,calc(var(--cell-size)*.62),29px);touch-action:none}
.phone .board .cell.entered .digit{font-style:italic}
.phone .notes{inset:1px;font-size:clamp(8px,calc(var(--cell-size)*.27),12px);font-weight:600}
.phone .cell.frozen:has(.notes) .notes{inset:5px 1px 0}
.phone .cell.frozen:has(.notes) .ice-mark{font-size:7px;padding:0 1px;background:#c9e4eb}
.phone .cell.frozen:has(.notes) .ice-mark:before,.phone .cell.frozen:has(.notes) .ice-mark:after{display:none}
.phone .board-caption{flex:none;min-height:18px;margin:0;padding:0 5px;font-size:11px}
.phone #ice-status{flex:none;margin:0;padding:2px 5px;font-size:11px;line-height:14px;max-height:32px;overflow:auto}
.phone .play-sidebar{padding:0;flex:none;min-width:0}
.phone .control-panel{padding:0;border:0;display:flex;flex-direction:column;gap:3px;background:none;box-shadow:none}
.phone .phone-selection{font-size:12px;line-height:15px;min-height:30px;max-height:30px;overflow:auto;display:block;color:#f0e9dc;padding:0 3px}
.phone .entry-switches{gap:4px;margin:0}
.phone .number-pad{grid-template-columns:repeat(9,minmax(0,1fr));gap:1px}
.phone .editing-tools{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin:0}
.phone .entry-switches button,.phone .editing-tools button,.phone body.large-controls .entry-switches button,.phone body.large-controls .editing-tools button{height:44px;min-height:44px;font-size:13px;padding:3px}
.phone .number-pad .number-button,.phone body.large-controls .number-pad .number-button{height:44px;min-height:44px;font-size:25px;padding:2px;touch-action:none}
.phone .entry-switches button,.phone .editing-tools button{touch-action:none}
.phone .editing-tools kbd{display:none}.phone .editing-tools span{font-size:13px}
.phone #hint{display:block;margin:0;text-align:center}
.phone #message{display:block;min-height:30px;max-height:30px;overflow:auto;padding:0 3px;font-size:12px;line-height:15px;margin:0}
.phone dialog[open]{display:flex;flex-direction:column;overflow:hidden;max-height:calc(var(--phone-height,100dvh) - 12px);max-width:calc(var(--phone-width,100vw) - 12px);padding:10px;margin:auto}
.phone dialog .dialog-heading{flex:none;align-items:center;margin:0 0 8px;gap:8px}
.phone dialog .dialog-heading h2{font-size:23px}
.phone dialog .close-button{min-width:58px;min-height:44px;font-size:14px}
.phone .phone-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:3px}
.phone .dialog-footer{flex:none;margin-top:6px;padding-top:6px}
.phone .phone-dialog-body .main-nav{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:10px 0}
.phone .phone-dialog-body .nav-spacer{display:none}
.phone .phone-dialog-body .nav-button{font-size:13px;min-height:44px}
.phone .phone-dialog-body .return-link{position:static;display:block;padding:10px;font-size:14px;border:1px solid #80633e;border-radius:4px}
.phone .phone-guide{font-size:14px;line-height:1.5;margin-top:12px}
.phone .phone-dialog-body .notice-panel{margin:0;padding:8px}
.phone .phone-dialog-body .notice-panel p{font-size:14px}
.phone dialog .filters{grid-template-columns:1fr 1fr;gap:8px}
.phone dialog .filters label:last-child{grid-column:1/-1}
.phone dialog button{min-height:44px}
.phone dialog.pause-dialog[open]{overflow:auto}
.phone .board .cell:focus-visible{outline-offset:-3px}
@media(orientation:landscape){
 .phone .play-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(330px,43%);gap:8px}
 .phone .play-sidebar{display:flex;align-items:center}
 .phone .control-panel{width:100%}
 .phone .number-pad{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}
 .phone .phone-selection{min-height:30px;max-height:45px}
}
@media(prefers-reduced-motion:reduce){.phone .cell{animation:none!important}}
/* Large-control preferences retain comfortable targets without widening the page. */
.phone body.large-controls .number-pad{gap:1px}
.phone body.large-controls .number-pad .number-button,.phone body.large-controls .entry-switches button,.phone body.large-controls .editing-tools button{height:48px;min-height:48px}
.phone body.large-controls .notes{font-size:clamp(8px,calc(var(--cell-size)*.27),12px)}
@media(orientation:landscape){.phone body.large-controls .number-pad{gap:3px}}
