/* Quiet surfaces, consistent controls, and locally bundled landscape themes. */
/* User-selected photos: preserve proportions and position the subject. */
:root[data-study-background="cloud-ridges"]{--landscape:url('../assets/themes/cloud-ridges.jpg');--photo-wash:rgba(246,247,245,.76);--photo-position:50% 55%}
.background-swatch.cloud-ridges{background-image:linear-gradient(rgba(246,247,245,0.61),rgba(246,247,245,0.61)),url('../assets/themes/cloud-ridges.jpg');background-position:50% 55%}
:root[data-study-background="alpine-light"]{--landscape:url('../assets/themes/alpine-light.jpg');--photo-wash:rgba(246,247,245,.74);--photo-position:66% 50%}
.background-swatch.alpine-light{background-image:linear-gradient(rgba(246,247,245,0.59),rgba(246,247,245,0.59)),url('../assets/themes/alpine-light.jpg');background-position:66% 50%}
:root[data-study-background="ice-shore"]{--landscape:url('../assets/themes/ice-shore.jpg');--photo-wash:rgba(246,247,245,.78);--photo-position:55% 65%}
.background-swatch.ice-shore{background-image:linear-gradient(rgba(246,247,245,0.63),rgba(246,247,245,0.63)),url('../assets/themes/ice-shore.jpg');background-position:55% 65%}
:root[data-study-background="fishing-dusk"]{--landscape:url('../assets/themes/fishing-dusk.jpg');--photo-wash:rgba(246,247,245,.78);--photo-position:43% 58%}
.background-swatch.fishing-dusk{background-image:linear-gradient(rgba(246,247,245,0.63),rgba(246,247,245,0.63)),url('../assets/themes/fishing-dusk.jpg');background-position:43% 58%}
:root[data-study-background="snow-trees"]{--landscape:url('../assets/themes/snow-trees.jpg');--photo-wash:rgba(246,247,245,.70);--photo-position:35% 50%}
.background-swatch.snow-trees{background-image:linear-gradient(rgba(246,247,245,0.55),rgba(246,247,245,0.55)),url('../assets/themes/snow-trees.jpg');background-position:35% 50%}
:root[data-study-background="wind-dusk"]{--landscape:url('../assets/themes/wind-dusk.jpg');--photo-wash:rgba(246,247,245,.72);--photo-position:38% 52%}
.background-swatch.wind-dusk{background-image:linear-gradient(rgba(246,247,245,0.57),rgba(246,247,245,0.57)),url('../assets/themes/wind-dusk.jpg');background-position:38% 52%}
:root:is([data-study-background="cloud-ridges"],[data-study-background="alpine-light"],[data-study-background="ice-shore"],[data-study-background="fishing-dusk"],[data-study-background="snow-trees"],[data-study-background="wind-dusk"]) :is(.word-card,.appearance-preview){background-image:linear-gradient(var(--photo-wash),var(--photo-wash)),var(--landscape);background-size:cover;background-repeat:no-repeat;background-position:var(--photo-position)}
:root:is([data-study-background="cloud-ridges"],[data-study-background="alpine-light"],[data-study-background="ice-shore"],[data-study-background="fishing-dusk"],[data-study-background="snow-trees"],[data-study-background="wind-dusk"]) .appearance-preview:before{background:none;backdrop-filter:none}
:root{--ink:#293d36;--text-2:#60746c;--text-3:#7a8982;--accent:#6c9780;--accent-deep:#3d6955;--accent-soft:#e5efe8;--line:rgba(91,121,105,.16);--shadow:0 20px 60px rgba(45,70,58,.07);--radius:28px;--landscape:none}
body{background:radial-gradient(ellipse at 8% 10%,#dae9e7,transparent 52%),radial-gradient(ellipse at 94% 85%,#eee4dc,transparent 55%),#f3f5ef;background-attachment:fixed}
button,a,input{touch-action:manipulation}
/* 学习界面不是文档阅读器：避免触控长按或拖动时留下浏览器的蓝色选区。
   表单与明确展示联系方式的区域仍保留复制能力。 */
body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable="true"],.contact-email,.contact-email *{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
button{transition:background .18s,border-color .18s,box-shadow .18s,transform .18s}
button:disabled{cursor:not-allowed}
.tabbar{border:1px solid rgba(255,255,255,.85);background:rgba(253,255,252,.8);box-shadow:0 8px 32px rgba(48,76,61,.09),inset 0 1px 0 #fff;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}
.tab.active{color:var(--accent-deep);background:linear-gradient(145deg,#e2eee2,#d5e5d7);box-shadow:inset 0 0 0 1px rgba(84,128,96,.15)}
.topbar .book-name{letter-spacing:-.3px}.today-progress{font-variant-numeric:tabular-nums}
.word-card,.stat-card,.setting-card,.review-calendar-wrap,.review-day-summary,.word-detail-dialog{border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.7)}
.stat-card,.setting-card,.review-day-summary{background:rgba(255,255,255,.57);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:24px}
.word-card:after{opacity:.15}.word-card .word{letter-spacing:-.035em;line-height:1.12}
.card-progress{height:6px;background:rgba(79,112,88,.1)}.card-progress .bar{background:linear-gradient(90deg,#5f8e77,#abc5a2)}
.sense-panel{border-radius:20px}.sense-panel-head{padding-bottom:10px;border-bottom:1px solid var(--line)}
.sense-panel-meta{flex-wrap:wrap}.meaning-reveal-btn{min-height:48px;min-width:128px;font-size:14px}
.examples{padding:20px 24px;background:rgba(255,255,255,.46);border:1px solid rgba(255,255,255,.7);border-radius:20px}
.ex-item{line-height:1.8}.ex-item .cn{line-height:1.7}
.card-actions{gap:12px}.card-actions button{min-height:52px;border-radius:16px;font-size:15px}
.btn-know{background:linear-gradient(135deg,#628e77,#7aa58a);color:#fff}.btn-fuzzy{background:#f3ecd9;color:#826a35}.btn-dunno{background:#f4e4df;color:#a65548}
.side-action{min-width:46px;min-height:46px;border:1px solid rgba(255,255,255,.8);box-shadow:0 5px 18px rgba(58,81,63,.06)}
.stat-card{padding:24px}.stat-card h3{letter-spacing:-.02em}.today-metrics{gap:10px}
.settings-menu{border:1px solid rgba(255,255,255,.8);background:rgba(255,255,255,.5);border-radius:22px;overflow:hidden}
.settings-menu-row{min-height:58px;border-radius:14px}.settings-menu-row.active{background:var(--accent-soft);color:var(--accent-deep)}
.setting-card-head{margin-bottom:20px}.setting-title{font-size:16px;letter-spacing:.01em}.setting-card-head small,.setting-hint{font-size:12px;line-height:1.7;color:var(--text-2)}
.big-btn,.mask-btn,.mini-btn,.known-detail,.known-remove,.favorite-toggle{min-height:44px;border-radius:13px}
.text-input{min-height:46px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.78)}
.review-date-slot{border-radius:18px;background:rgba(255,255,255,.55);box-shadow:none}.review-date-slot.today{box-shadow:0 0 0 2px rgba(98,143,113,.15)}
.review-row{border-radius:18px;background:rgba(255,255,255,.6);margin-bottom:10px}.review-cell{padding:16px 18px}
.calendar-mask-controls{background:rgba(255,255,255,.5)}.mask-btn.active{background:var(--accent);color:#fff}
.appearance-workspace{gap:24px}.appearance-preview{min-height:380px;border-radius:22px}.appearance-controls section{padding:18px;background:rgba(255,255,255,.3)}
.appearance-label{flex-wrap:wrap}.appearance-label strong{font-size:15px}.appearance-label small{font-size:11px}
.background-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.background-options button{display:flex;flex-direction:column;padding:7px 7px 12px;gap:9px;font-size:12px;border-radius:16px}.background-swatch{height:84px;border-radius:11px}
.appearance-options button.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px rgba(101,145,117,.1)}.appearance-options button.active:after{background:var(--accent-deep);width:21px;height:21px}
.font-options button{min-height:88px}.font-options button small{font-size:12px}
:root[data-study-background="sky"]{--landscape:url('../assets/themes/cloud-photo.jpg');--photo-wash:rgba(241,243,246,.66)}
:root[data-study-background="forest"]{--landscape:url('../assets/themes/forest-photo.jpg');--photo-wash:rgba(246,247,244,.76)}
:root:is([data-study-background="sky"],[data-study-background="forest"]) :is(.word-card,.appearance-preview){background-image:linear-gradient(var(--photo-wash),var(--photo-wash)),var(--landscape);background-position:center;background-size:cover}
:root:is([data-study-background="sky"],[data-study-background="forest"]) .appearance-preview:before{background:none;backdrop-filter:none}
.background-swatch.sky{background-image:linear-gradient(rgba(241,243,246,.55),rgba(241,243,246,.55)),url('../assets/themes/cloud-photo.jpg')}.background-swatch.forest{background-image:linear-gradient(rgba(246,247,244,.65),rgba(246,247,244,.65)),url('../assets/themes/forest-photo.jpg')}
@media(hover:hover){.review-date-slot:hover,.appearance-options button:hover{box-shadow:0 6px 18px rgba(52,84,61,.09);border-color:rgba(93,140,106,.35)}}
@media(min-width:760px) and (max-width:1180px){.setting-card{padding:22px}.settings-layout{gap:20px}.mask-btn,.mini-btn{min-height:48px}.appearance-controls{grid-template-columns:1fr}.background-options{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){.settings-menu{display:flex;overflow-x:auto;gap:6px;padding:6px}.settings-menu-row{flex:0 0 auto;min-height:46px;padding:10px 12px}.settings-menu-row em,.settings-menu-row>span{display:none}.settings-menu-row b{font-size:13px}.stat-card,.setting-card{padding:18px;border-radius:20px}.appearance-controls{display:flex}.background-options{grid-template-columns:repeat(2,minmax(0,1fr))}.background-swatch{height:82px}.appearance-preview{min-height:280px}.card-actions{gap:7px}.card-actions button{min-height:48px;font-size:13px}.sense-panel-head{align-items:flex-start;flex-wrap:wrap}.sense-panel-meta{justify-content:flex-start}.examples{padding:16px}.review-cell{padding:12px}.meaning-reveal-btn{min-height:48px}.background-options button{display:flex}}
/* Glass belongs to controls/content surfaces, never to the landscape. */
:root[data-study-background="mist"]{--landscape:url('../assets/themes/mist-lake.png')}
:root:is([data-study-background="mist"],[data-study-background="sky"],[data-study-background="forest"],[data-study-background="cloud-ridges"],[data-study-background="alpine-light"],[data-study-background="ice-shore"],[data-study-background="fishing-dusk"],[data-study-background="snow-trees"],[data-study-background="wind-dusk"]) :is(.word-card,.appearance-preview){background-image:var(--landscape);background-position:var(--photo-position,center);background-size:cover;filter:none;-webkit-backdrop-filter:none;backdrop-filter:none}
.word-card{backdrop-filter:none;-webkit-backdrop-filter:none}.word-card:after,.appearance-preview:before{display:none}
.background-swatch.mist{background-image:url('../assets/themes/mist-lake.png')}
.background-swatch.sky{background-image:url('../assets/themes/cloud-photo.jpg')}
.background-swatch.forest{background-image:url('../assets/themes/forest-photo.jpg')}
.background-swatch.cloud-ridges{background-image:url('../assets/themes/cloud-ridges.jpg')}
.background-swatch.alpine-light{background-image:url('../assets/themes/alpine-light.jpg')}
.background-swatch.ice-shore{background-image:url('../assets/themes/ice-shore.jpg')}
.background-swatch.fishing-dusk{background-image:url('../assets/themes/fishing-dusk.jpg')}
.background-swatch.snow-trees{background-image:url('../assets/themes/snow-trees.jpg')}
.background-swatch.wind-dusk{background-image:url('../assets/themes/wind-dusk.jpg')}

/* Extended scenes live in the device-aware library. They keep the same quiet reading wash as the original photo themes. */
:root[data-study-background="rose-summit"]{--landscape:url('../assets/themes/rose-summit.jpg');--photo-wash:rgba(251,244,242,.70);--photo-position:50% 48%}
:root[data-study-background="moonlit-blue"]{--landscape:url('../assets/themes/moonlit-blue.jpg');--photo-wash:rgba(239,246,247,.73);--photo-position:57% 50%}
:root[data-study-background="amber-sunrise"]{--landscape:url('../assets/themes/amber-sunrise.jpg');--photo-wash:rgba(252,246,232,.70);--photo-position:50% 49%}
:root[data-study-background="river-light"]{--landscape:url('../assets/themes/river-light.jpg');--photo-wash:rgba(248,241,226,.72);--photo-position:46% 54%}
:root[data-study-background="blue-ranges"]{--landscape:url('../assets/themes/blue-ranges.jpg');--photo-wash:rgba(239,246,250,.70);--photo-position:50% 50%}
:root[data-study-background="golden-fog"]{--landscape:url('../assets/themes/golden-fog.jpg');--photo-wash:rgba(252,244,227,.73);--photo-position:49% 51%}
:root[data-study-background="snow-wanderer"]{--landscape:url('../assets/themes/snow-wanderer.jpg');--photo-wash:rgba(244,249,252,.72);--photo-position:50% 57%}
:root[data-study-background="twilight-lake"]{--landscape:url('../assets/themes/twilight-lake.jpg');--photo-wash:rgba(237,244,250,.72);--photo-position:50% 51%}
:root[data-study-background="forest-road"]{--landscape:url('../assets/themes/forest-road.jpg');--photo-wash:rgba(238,244,235,.73);--photo-position:52% 57%}
:root:is([data-study-background="rose-summit"],[data-study-background="moonlit-blue"],[data-study-background="amber-sunrise"],[data-study-background="river-light"],[data-study-background="blue-ranges"],[data-study-background="golden-fog"],[data-study-background="snow-wanderer"],[data-study-background="twilight-lake"],[data-study-background="forest-road"]) :is(.word-card,.appearance-preview){background-image:var(--landscape);background-position:var(--photo-position,center);background-size:cover;filter:none;-webkit-backdrop-filter:none;backdrop-filter:none}
:root:is([data-study-background="rose-summit"],[data-study-background="moonlit-blue"],[data-study-background="amber-sunrise"],[data-study-background="river-light"],[data-study-background="blue-ranges"],[data-study-background="golden-fog"],[data-study-background="snow-wanderer"],[data-study-background="twilight-lake"],[data-study-background="forest-road"]) .appearance-preview:before{background:none;backdrop-filter:none}
.background-swatch.rose-summit{background-image:url('../assets/themes/rose-summit.jpg');background-position:50% 48%}
.background-swatch.moonlit-blue{background-image:url('../assets/themes/moonlit-blue.jpg');background-position:57% 50%}
.background-swatch.amber-sunrise{background-image:url('../assets/themes/amber-sunrise.jpg');background-position:50% 49%}
.background-swatch.river-light{background-image:url('../assets/themes/river-light.jpg');background-position:46% 54%}
.background-swatch.blue-ranges{background-image:url('../assets/themes/blue-ranges.jpg');background-position:50% 50%}
.background-swatch.golden-fog{background-image:url('../assets/themes/golden-fog.jpg');background-position:49% 51%}
.background-swatch.snow-wanderer{background-image:url('../assets/themes/snow-wanderer.jpg');background-position:50% 57%}
.background-swatch.twilight-lake{background-image:url('../assets/themes/twilight-lake.jpg');background-position:50% 51%}
.background-swatch.forest-road{background-image:url('../assets/themes/forest-road.jpg');background-position:52% 57%}

/* Landscape-only scenes remain saved to the account, but use a phone-safe common background on narrow screens. */
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){
  :root:is([data-study-background="alpine-light"],[data-study-background="ice-shore"],[data-study-background="fishing-dusk"],[data-study-background="snow-trees"],[data-study-background="wind-dusk"],[data-study-background="rose-summit"],[data-study-background="moonlit-blue"],[data-study-background="amber-sunrise"],[data-study-background="river-light"],[data-study-background="blue-ranges"],[data-study-background="golden-fog"],[data-study-background="snow-wanderer"],[data-study-background="twilight-lake"],[data-study-background="forest-road"]) :is(.word-card,.appearance-preview){background-image:url('../assets/themes/mist-lake.png');background-position:center}
}

/* Phone-only scenes use portrait framing on narrow screens and never force a tall crop onto a desktop workspace. */
:root[data-study-background="grassland-boat"]{--landscape:url('../assets/themes/grassland-boat.jpg');--photo-position:50% 50%}
:root[data-study-background="snow-lake"]{--landscape:url('../assets/themes/snow-lake.jpg');--photo-position:50% 49%}
:root[data-study-background="autumn-grove"]{--landscape:url('../assets/themes/autumn-grove.jpg');--photo-position:50% 49%}
:root[data-study-background="winter-solitude"]{--landscape:url('../assets/themes/winter-solitude.jpg');--photo-position:50% 52%}
:root[data-study-background="milkyway-shore"]{--landscape:url('../assets/themes/milkyway-shore.jpg');--photo-position:50% 48%}
:root[data-study-background="balloon-dawn"]{--landscape:url('../assets/themes/balloon-dawn.jpg');--photo-position:50% 47%}
:root[data-study-background="alpine-lake-mobile"]{--landscape:url('../assets/themes/alpine-lake-mobile.jpg');--photo-position:50% 50%}
:root[data-study-background="star-vortex"]{--landscape:url('../assets/themes/star-vortex.jpg');--photo-position:50% 48%}
:root[data-study-background="beacon-storm"]{--landscape:url('../assets/themes/beacon-storm.jpg');--photo-position:50% 50%}
:root[data-study-background="autumn-waterfall"]{--landscape:url('../assets/themes/autumn-waterfall.jpg');--photo-position:50% 50%}
:root:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]) :is(.word-card,.appearance-preview){background-image:var(--landscape);background-position:var(--photo-position);background-size:cover;filter:none;-webkit-backdrop-filter:none;backdrop-filter:none}
:root:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]) .appearance-preview:before{background:none;backdrop-filter:none}
.background-swatch.grassland-boat{background-image:url('../assets/themes/grassland-boat.jpg')}.background-swatch.snow-lake{background-image:url('../assets/themes/snow-lake.jpg')}.background-swatch.autumn-grove{background-image:url('../assets/themes/autumn-grove.jpg')}.background-swatch.winter-solitude{background-image:url('../assets/themes/winter-solitude.jpg')}.background-swatch.milkyway-shore{background-image:url('../assets/themes/milkyway-shore.jpg')}.background-swatch.balloon-dawn{background-image:url('../assets/themes/balloon-dawn.jpg')}.background-swatch.alpine-lake-mobile{background-image:url('../assets/themes/alpine-lake-mobile.jpg')}.background-swatch.star-vortex{background-image:url('../assets/themes/star-vortex.jpg')}.background-swatch.beacon-storm{background-image:url('../assets/themes/beacon-storm.jpg')}.background-swatch.autumn-waterfall{background-image:url('../assets/themes/autumn-waterfall.jpg')}
@media(min-width:760px) and (orientation:landscape){
  :root:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]) :is(.word-card,.appearance-preview){background-image:url('../assets/themes/mist-lake.png');background-position:center}
}
.word-card .word,.word-card .sense-panel,.word-card .examples,.card-actions button,.card-confirm button,.side-action,.stat-card,.appearance-preview>*,.word-card .phon{
  background:linear-gradient(135deg,rgba(255,255,255,.62),rgba(255,255,255,.32));
  border:1px solid rgba(255,255,255,.72);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65),0 8px 24px rgba(25,42,35,.10);
  -webkit-backdrop-filter:blur(22px) saturate(115%);backdrop-filter:blur(22px) saturate(115%);
  color:var(--ink);
}
.word-card .word{padding:8px 22px;border-radius:22px}
.word-card{overflow-y:auto}.word-card .examples{flex:0 0 auto;min-height:105px}
.word-card .phon{border-radius:14px;padding:7px 14px;width:fit-content;max-width:100%}
.word-card .sense-panel,.word-card .examples{border-radius:20px}
.card-actions .btn-know,.card-actions .btn-cut{background:linear-gradient(135deg,rgba(218,244,222,.66),rgba(208,238,216,.32));color:#244f35}
.card-actions .btn-dunno{background:linear-gradient(135deg,rgba(255,225,220,.70),rgba(249,211,202,.34));color:#813e35}
.card-actions .btn-fuzzy{background:linear-gradient(135deg,rgba(255,243,207,.70),rgba(247,232,190,.34));color:#72551e}
.card-actions .btn-prev{background:linear-gradient(135deg,rgba(255,255,255,.62),rgba(240,245,241,.32));color:#445a4c}
.card-actions button:disabled{opacity:.55}
.stat-card{background:linear-gradient(135deg,rgba(255,255,255,.36),rgba(255,255,255,.16))}
.word-card .card-hint,.card-progress-wrap>span,.card-progress-wrap>small{color:#243b2f;background:rgba(255,255,255,.75);border-radius:8px;padding:4px 8px}
.appearance-preview>*{padding:7px 13px;border-radius:12px}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.word-card .word,.word-card .sense-panel,.word-card .examples,.card-actions button,.stat-card,.word-card .phon{background:rgba(249,251,248,.9)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Responsive layout: phone portrait/landscape, iPad, and laptop. */
html{height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-width:320px;min-height:100dvh;overflow:hidden}
button,input,select,textarea{font-size:max(16px,1em)}
.content,.view,.settings-main,.review-list{min-width:0}
.word-card,.review-row,.stat-card,.setting-card,.calendar-glass{min-width:0}

/* Laptop: give wide screens a calm reading column instead of stretching every card. */
@media(min-width:1181px){
  .app{max-width:1600px;padding-inline:clamp(28px,4vw,72px)}
  .content{max-width:1440px;margin-inline:auto;width:100%}
  .word-card{inset-inline:clamp(28px,5vw,92px);padding-inline:clamp(42px,6vw,78px)}
  .review-list{max-width:1180px}
  .stats-page{max-width:1360px;padding-inline:clamp(20px,3vw,44px)}
  .settings-layout{max-width:1360px;grid-template-columns:310px minmax(0,1fr);gap:30px}
  .calendar-glass{max-width:1160px}
}

/* iPad: retain the roomy study layout while preventing side panels from stealing content width. */
@media(min-width:760px) and (max-width:1180px){
  .app{padding-inline:18px}
  .topbar-left{max-width:42%}
  .word-card{inset-inline:8px;padding:26px 34px}
  .word-card .word{font-size:clamp(44px,7vw,62px)}
  .card-side-actions{right:26px!important}
  .settings-layout{grid-template-columns:230px minmax(0,1fr);padding-inline:8px;gap:16px}
  .settings-menu-row{grid-template-columns:26px minmax(0,1fr);padding-inline:13px}
  .settings-menu-row em{display:none}
  .stats-page{padding-inline:8px}
  .stats-grid{gap:14px}
  .calendar-glass{margin-inline:8px;padding:21px}
  .review-row .done-btns{flex-basis:100px}
}

/* iPad 横屏：设置页不再保留一整列窄侧栏，避免右侧内容被压得过窄。 */
@media(min-width:760px) and (max-width:1180px) and (orientation:landscape){
  .settings-layout{grid-template-columns:1fr;max-width:980px}
  .settings-aside{display:grid;grid-template-columns:220px minmax(0,1fr);align-items:stretch;gap:14px;margin-bottom:14px}
  .settings-cover,.settings-menu.settings-index{height:100%}
  .settings-cover .profile-art{height:118px}
}

/* Phone portrait: all controls remain reachable with one hand and no horizontal overflow. */
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){
  :root{--topbar-h:68px;--tabbar-h:70px}
  body{overflow:hidden}
  .app{height:100dvh;min-height:100dvh;overflow:hidden}
  .topbar{height:calc(68px + env(safe-area-inset-top));min-height:calc(68px + env(safe-area-inset-top));padding:calc(env(safe-area-inset-top) + 7px) 14px 7px}
  .topbar-left{min-width:0;max-width:calc(100% - 46px)}
  .book-name{overflow:hidden;font-size:17px;text-overflow:ellipsis;white-space:nowrap}
  .today-progress{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
  .icon-btn{width:40px;height:40px;flex:none}
  .content{min-height:0}
  .view{overscroll-behavior:contain}
  .cards-stage{min-height:100%}
  .word-card{inset:5px 7px;padding:16px 13px 82px;border-radius:20px}
  .card-progress-wrap{gap:7px;margin-bottom:13px}
  .card-progress-text{font-size:10px}
  .word-row{gap:8px;padding-right:48px;text-align:left}
  .word-card .word{font-size:clamp(34px,11vw,47px);letter-spacing:-.8px;overflow-wrap:anywhere}
  .word-card .phon{margin:8px 52px 10px 0;font-size:12px;text-align:left}
  .word-card .phon.single-pronunciation{justify-content:flex-start}
  .word-freq{margin-top:7px;font-size:10px}
  .card-tools{position:static;justify-content:flex-start;margin-top:8px}
  .defer-toggle,.defer-session-badge{min-height:38px;padding:7px 10px;font-size:11px}
  .card-side-actions{right:12px!important;top:18px!important;gap:7px}
  .side-action{width:39px;height:39px;font-size:20px}
  .sense-panel{margin-bottom:8px;padding:8px 5px 6px}
  .sense-panel-head{min-height:42px;gap:6px}
  .sense-panel-head>span{font-size:12px}
  .sense-panel-meta{gap:6px}
  .sense-panel-head .sense-panel-meta small{display:none}
  .meaning-reveal-btn{min-width:112px;min-height:42px;padding:8px 11px;font-size:12px}
  .sense-panel .senses{max-height:min(28dvh,188px);padding-right:4px}
  .sense{padding-block:8px}
  .sense .cn{font-size:15px;line-height:1.42}
  .examples{max-height:min(24dvh,165px);min-height:0;margin-top:8px;padding:12px 13px}
  .ex-item{font-size:13px;line-height:1.65}
  .ex-item .cn{font-size:12px}
  .card-hint{margin-top:4px;padding-top:7px;font-size:11px;line-height:1.45}
  .card-confirm{margin-top:8px}
  .card-confirm button{min-height:46px;padding:10px;font-size:14px}
  .card-actions{gap:6px;margin-top:9px}
  .card-actions button{min-width:0;min-height:48px;padding:7px 3px;font-size:12px;line-height:1.2}
  .tabbar{height:calc(70px + env(safe-area-inset-bottom));min-height:calc(70px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .tab{min-width:0;padding:5px 2px;font-size:10px}
  .tab .tab-ico{font-size:19px}
  .tab-flame,.tab-flame svg{width:19px;height:19px}
  .review-toolbar{margin:5px 10px 10px;padding:11px;border-radius:17px}
  .review-tools-copy strong{font-size:14px}
  .review-tools-copy small{font-size:10px}
  .mask-group{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  .mask-btn{min-width:0;min-height:43px;padding:8px 6px;font-size:12px}
  .mask-btn:last-child{grid-column:span 2}
  .review-list{padding:2px 10px 24px}
  .calendar-glass{margin:4px 0 22px;padding:15px 10px;border-radius:20px}
  .calendar-heading{gap:11px;margin-bottom:12px}
  .calendar-heading strong{font-size:15px;line-height:1.35}
  .month-nav{width:100%;gap:5px}
  .month-current{min-width:0;padding-inline:5px;font-size:13px}
  .month-step{width:30px;height:30px}
  .calendar-mask-controls{gap:10px;margin:8px 0 12px;padding:10px}
  .calendar-mask-buttons{gap:7px}
  .calendar-mask-btn{min-height:42px;padding:8px 6px;font-size:12px}
  .calendar-week,.review-calendar{gap:3px}
  .calendar-week span{font-size:10px}
  .review-date-slot,.calendar-blank{min-height:69px}
  .review-date-slot{padding:5px 2px;border-radius:12px}
  .review-date-slot .review-date-label{font-size:10px}
  .review-date-slot .review-date-count strong{font-size:16px}
  .review-date-slot .review-date-count small{font-size:7px}
  .review-date-status{font-size:7px}
  .calendar-summary{flex-wrap:wrap;gap:5px 12px;margin-top:11px;font-size:10px}
  .calendar-summary b{font-size:13px}
  .month-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .review-header{padding-inline:1px}
  .review-day-title{font-size:16px}
  .review-day-summary{margin-bottom:10px;padding:13px 12px}
  .review-day-calendar-mark strong{font-size:16px}
  .review-total{padding:0 0 0 11px}
  .review-total strong{font-size:26px}
  .review-group-counts span{padding:6px 8px;font-size:9px}
  .review-row{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);margin-bottom:8px}
  .review-cell{min-width:0;padding:11px 10px}
  .review-cell.word{border-right:1px solid var(--line);font-size:15px}
  .review-cell.meaning{font-size:12px}
  .review-row .sense-line{font-size:11px;line-height:1.5}
  .review-row .done-btns{grid-column:1/3;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-height:50px;padding:7px;border-top:1px solid rgba(215,222,213,.82);border-left:0}
  .review-row .done-btns small{display:none}
  .review-row .done-btns button{width:100%;height:34px;padding:0 4px;font-size:11px}
  .stats-page{padding:6px 10px 25px}
  .stats-title{align-items:flex-start;gap:5px;margin:5px 0 14px}
  .stats-title strong{font-size:19px}
  .stats-title span{font-size:10px}
  .stats-grid{gap:11px}
  .stat-card{padding:15px;border-radius:18px}
  .stat-card h3{margin-bottom:13px;font-size:15px}
  .progress-card>b{font-size:42px}
  .distribution-chart{gap:7px;height:100px}
  .dist-item span{font-size:9px}
  .today-metrics span{min-height:40px;padding:8px 9px}
  .schedule-chart,.trends-chart{height:140px;margin-top:10px;gap:4px}
  .bar-pair,.trend-stack{height:116px}
  .chart-col small,.trend-col small{font-size:8px}
  .settings-layout{padding:10px 10px 26px}
  .settings-aside{gap:10px;margin-bottom:10px}
  .settings-cover{display:flex!important;min-height:64px;align-items:center;gap:12px;padding:10px 12px}
  .settings-cover .profile-art{display:none}
  .profile-copy{padding:0}
  .profile-copy strong{font-size:15px}
  .profile-copy small{font-size:11px;line-height:1.35}
  .settings-menu.settings-index{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:6px;overflow:visible;scroll-snap-type:none}
  .settings-menu.settings-index::-webkit-scrollbar{display:none}
  .settings-menu-row,.settings-menu-row:last-child{display:flex;min-width:0;min-height:42px;padding:8px 11px;border:0!important;border-radius:12px!important}
  .settings-menu-row span,.settings-menu-row em{display:none!important}
  .settings-menu-row b{font-size:12px}
  .settings-menu-account-group{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0;padding:24px 6px 6px}
  .settings-menu-account-group .settings-menu-row{width:100%!important;min-width:0!important;justify-content:center;text-align:center}
  .settings-menu-account-group .settings-menu-row:last-child{grid-column:auto!important}
  .settings-menu-group-label{left:10px}
  .settings-main .setting-card{padding:15px}
  .setting-card-head{align-items:flex-start;gap:10px;margin-bottom:14px}
  .setting-card-head small{font-size:11px;line-height:1.45}
  .setting-card-icon{flex:none}
  .book-picker{grid-template-columns:1fr;gap:8px}
  .book-item{padding:11px}
  .preference-row{align-items:flex-start;grid-template-columns:1fr!important;gap:8px;padding:12px 0}
  .preference-row>.soft-switch,.preference-row>.pill-options{justify-self:start!important}
  .pill-options{flex-wrap:wrap}
  .pill-options span{min-width:58px}
  .setting-row{align-items:center;gap:8px}
  .review-method-options{gap:7px}
  .review-method-options span{min-height:0;padding:10px}
  .appearance-preview{min-height:225px;padding:20px 14px}
  .preview-word{font-size:42px}
  .appearance-controls section{padding:13px}
  .background-options{grid-template-columns:repeat(2,minmax(0,1fr))}
  .background-options button{min-width:0;padding:6px}
  .background-swatch{height:62px}
  .data-actions{grid-template-columns:1fr}
  .cloud-actions#cloudGuestActions{grid-template-columns:1fr}
  .cloud-verification-entry,.cloud-recovery-fields,.cloud-recovery-actions{grid-template-columns:1fr}
}

/* Paint the selected scene on the complete phone study stage, not just inside
   the card. A tall viewport can otherwise expose a plain strip below the card. */
@media(max-width:759px){
  :root[data-study-background] #app,
  :root[data-study-background] #viewCards{
    background-color:var(--bg);
    background-image:var(--landscape);
    background-position:var(--photo-position,center);
    background-size:cover;
    background-repeat:no-repeat;
  }
}

/* Very narrow phones: keep four learning choices on one reachable row. */
@media(max-width:370px){
  .word-card{padding-inline:11px}
  .word-card .word{font-size:33px}
  .card-actions{gap:4px}
  .card-actions button{font-size:11px}
  .tab{font-size:9px}
  .review-date-slot,.calendar-blank{min-height:62px}
  .review-date-slot .review-date-count strong{font-size:14px}
  .calendar-summary{font-size:9px}
}

/* Landscape phones use a compact left rail, preserving vertical room for the word card. */
@media(max-width:759px) and (orientation:landscape){
  :root{--topbar-h:56px}
  .app{display:grid;grid-template-columns:62px minmax(0,1fr);grid-template-rows:56px minmax(0,1fr);height:100dvh}
  .tabbar{grid-row:1/3;grid-column:1;display:flex;flex-direction:column;width:62px;height:auto;min-height:0;padding:5px 3px env(safe-area-inset-bottom);border:0;border-right:1px solid var(--line);box-shadow:4px 0 14px rgba(51,73,57,.04)}
  .tab{flex:1;width:100%;max-height:52px;padding:3px 1px;font-size:9px}
  .tab .tab-ico{font-size:17px}
  .topbar{grid-row:1;grid-column:2;height:56px;min-height:56px;padding:5px 12px}
  .content{grid-row:2;grid-column:2;min-height:0}
  .word-card{inset:4px;padding:12px 16px 14px}
  .card-progress-wrap{margin-bottom:7px}
  .word-row{padding-right:46px}
  .word-card .word{font-size:clamp(31px,5.2vw,42px)}
  .word-card .phon{margin:5px 48px 5px 0}
  .card-side-actions{top:12px!important;right:12px!important;gap:5px}
  .side-action{width:35px;height:35px;font-size:17px}
  .sense-panel .senses{max-height:86px}
  .examples{max-height:74px;margin-top:4px;padding:7px 10px}
  .card-hint{display:none}
  .card-actions{margin-top:7px}
  .card-actions button{min-height:38px}
  .review-toolbar{margin:4px 8px 7px;padding:8px}
  .review-list{padding:1px 8px 12px}
  .calendar-glass{padding:12px;margin-bottom:10px}
  .calendar-heading{align-items:center;flex-direction:row;margin-bottom:8px}
  .calendar-heading strong{font-size:13px}
  .month-nav{width:auto;min-width:220px}
  .calendar-mask-controls{display:none}
  .review-date-slot,.calendar-blank{min-height:49px}
  .review-date-status{display:none}
  .calendar-summary{display:none}
}

/* Fullscreen control sits directly after Settings on larger screens. */
.topbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.fullscreen-icon{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}
.fullscreen-icon[hidden]{display:none!important}
.fullscreen-exit{display:none}
[data-fullscreen-control][aria-pressed="true"] .fullscreen-enter{display:none!important}
[data-fullscreen-control][aria-pressed="true"] .fullscreen-exit{display:block!important}
.fullscreen-btn{display:grid;place-items:center;padding:0}
.fullscreen-tab .tab-ico{display:grid;place-items:center}
.fullscreen-tab .fullscreen-icon{width:18px;height:18px}
/* Fullscreen performance: the photo is painted once by #app.  Content remains translucent,
   but avoids nested 22px backdrop filters and large shadows that cause frame drops. */
#app:fullscreen,#app:-webkit-full-screen,#app.is-fullscreen{width:100vw!important;min-width:100vw;max-width:none!important;height:100vh;min-height:100vh;margin:0!important;background-color:var(--bg);background-image:var(--landscape);background-position:var(--photo-position,center);background-size:cover;background-repeat:no-repeat}
/* Phone fullscreen keeps the normal portrait study canvas.  100dvh also avoids the
   address-bar gap that 100vh creates on mobile browsers. */
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){#app:fullscreen,#app:-webkit-full-screen,#app.is-fullscreen{height:100dvh;min-height:100dvh;max-height:100dvh}}
/* iPad 在横竖屏之间切换时，先用短暂的柔和过渡遮住栅格与壁纸的重排。 */
#app.ipad-orientation-transition{animation:ipad-orientation-shift .42s cubic-bezier(.22,.75,.28,1)}
@keyframes ipad-orientation-shift{0%{opacity:.48;transform:scale(.985);filter:blur(5px)}58%{opacity:.88;transform:scale(1.008);filter:blur(1px)}100%{opacity:1;transform:scale(1);filter:none}}
#app:fullscreen .content,#app:-webkit-full-screen .content,#app.is-fullscreen .content{max-width:none}
#app:fullscreen .word-card,#app:-webkit-full-screen .word-card,#app.is-fullscreen .word-card{background-color:rgba(247,250,246,.16)!important;background-image:none!important;box-shadow:0 12px 34px rgba(24,38,30,.10)}
#app:fullscreen :is(.word-card .word,.word-card .sense-panel,.word-card .examples,.word-card .phon,.card-actions button,.card-confirm button,.side-action,.tabbar),#app:-webkit-full-screen :is(.word-card .word,.word-card .sense-panel,.word-card .examples,.word-card .phon,.card-actions button,.card-confirm button,.side-action,.tabbar),#app.is-fullscreen :is(.word-card .word,.word-card .sense-panel,.word-card .examples,.word-card .phon,.card-actions button,.card-confirm button,.side-action,.tabbar){-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 3px 12px rgba(25,42,35,.08)}

/* 学习轨迹：不使用参考图的遗忘曲线，改为可追溯的个人学习节点与复习计划。 */
.learning-track-action{color:#527f7e}.learning-track-action:hover{color:#fff;background:linear-gradient(135deg,#5a9691,#77aaa2)}.learning-track-action svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75}.learning-track-action svg circle{fill:currentColor;stroke:none}.learning-track-modal{position:fixed;z-index:210;inset:0;display:grid;place-items:center;padding:24px}.learning-track-modal[hidden]{display:none}.learning-track-backdrop{position:absolute;inset:0;background:rgba(28,44,38,.42);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.learning-track-dialog{position:relative;width:min(760px,94vw);max-height:min(820px,90vh);overflow:auto;padding:32px;border:1px solid rgba(255,255,255,.76);border-radius:30px;background:linear-gradient(145deg,rgba(250,253,249,.94),rgba(232,242,237,.86));box-shadow:0 28px 80px rgba(18,37,29,.27);color:var(--ink)}.learning-track-close{position:absolute;right:18px;top:16px;width:36px;height:36px;border:0;border-radius:50%;color:#587066;background:rgba(255,255,255,.68);font-size:24px;cursor:pointer}.learning-track-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:6px 5px 20px}.learning-track-header small,.track-section-title small{color:#80988a;font-size:9px;font-weight:900;letter-spacing:1.8px}.learning-track-header h2{margin:6px 0 4px;font:800 clamp(36px,5vw,58px)/1 var(--english-font);letter-spacing:-1.5px}.learning-track-header p{margin:0;color:var(--text-2);font-family:var(--english-font)}.track-state{margin-top:11px;padding:7px 10px;border-radius:999px;font-size:11px;font-weight:850;white-space:nowrap}.track-state.steady{color:#3c7345;background:#e1f0dc}.track-state.building{color:#947127;background:#f8ecc4}.track-state.focus{color:#a2554b;background:#f7e1dc}.track-state.fresh{color:#65756b;background:#e9efea}.track-overview{display:grid;grid-template-columns:1.15fr .85fr 1fr;gap:10px;margin-bottom:22px}.track-overview>div{min-height:106px;padding:16px;border:1px solid rgba(112,144,127,.14);border-radius:18px;background:rgba(255,255,255,.56)}.track-overview span,.track-overview small{display:block;color:var(--text-3);font-size:10px;font-weight:750}.track-overview strong{display:block;margin-top:7px;color:#405b4d;font:800 28px/1 var(--english-font)}.track-overview small{margin-top:8px}.track-overview i{display:block;overflow:hidden;height:7px;margin-top:14px;border-radius:99px;background:#dce8de}.track-overview i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#608f78,#93b68c)}.track-route,.track-plan{padding:18px;margin-top:13px;border:1px solid rgba(112,144,127,.13);border-radius:20px;background:rgba(255,255,255,.4)}.track-section-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.track-section-title h3{margin:4px 0 0;font-size:16px}.track-section-title>span{padding:5px 8px;border-radius:999px;color:#687e71;background:rgba(228,238,231,.82);font-size:10px;font-weight:800}.track-route ol{display:flex;gap:0;overflow-x:auto;margin:19px 0 0;padding:0;list-style:none}.track-event{position:relative;display:flex;min-width:126px;flex:1;flex-direction:column;gap:8px;padding:0 16px 0 0}.track-event:not(:last-child):after{content:"";position:absolute;top:11px;left:26px;right:-1px;height:2px;background:#d6e1d7}.track-event i{position:relative;z-index:1;display:grid;place-items:center;width:23px;height:23px;border-radius:50%;color:#fff;background:#78a171;font:800 10px/1 var(--english-font);font-style:normal}.track-event.uncertain i{background:#a3a893}.track-event.unfamiliar i{background:#d18270}.track-event div{display:flex;flex-direction:column;gap:3px}.track-event strong{font-size:12px}.track-event small{color:var(--text-3);font-size:10px}.track-empty{padding:4px 0;color:var(--text-3);font-size:12px}.track-plan ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0 0;padding:0;list-style:none}.track-plan li{display:flex;min-height:62px;flex-direction:column;justify-content:space-between;padding:10px;border:1px solid rgba(112,144,127,.12);border-radius:13px;background:rgba(255,255,255,.56)}.track-plan time{color:#4b6254;font-size:11px;font-weight:850}.track-plan span{color:#748177;font-size:9px}.track-plan li.done{background:rgba(229,242,222,.72)}.track-plan li.done span{color:#5b8b4d}.track-plan li.overdue{background:rgba(250,234,228,.72)}.track-plan li.overdue span{color:#ad6858}
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){.learning-track-modal{padding:10px}.learning-track-dialog{width:100%;max-height:92vh;padding:23px 17px;border-radius:24px}.learning-track-header{padding-right:40px}.learning-track-header h2{font-size:39px}.track-state{margin-top:5px}.track-overview{grid-template-columns:1fr 1fr}.track-overview>div:first-child{grid-column:1/3}.track-plan ul{grid-template-columns:repeat(2,minmax(0,1fr))}.track-event{min-width:117px}.learning-track-backdrop{backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}}

/* 今日自测：复习完成后才开放；自测页保持一张干净的单词卡。 */
.today-self-test{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:12px 0 18px;padding:14px 16px;border:1px dashed rgba(111,139,119,.23);border-radius:18px;background:rgba(245,248,244,.34);opacity:.7}.today-self-test.ready{border-style:solid;border-color:rgba(105,154,93,.26);background:linear-gradient(135deg,rgba(235,247,230,.62),rgba(250,251,247,.52));opacity:1}.today-self-test strong{color:var(--ink);font-size:13px}.today-self-test small{display:block;margin-top:4px;color:var(--text-3);font-size:10px}.today-self-test-actions{display:flex;gap:8px}.today-self-test-actions button{min-width:118px;min-height:42px;padding:8px 12px;border:1px solid rgba(103,145,103,.18);border-radius:13px;color:#5d7664;background:rgba(255,255,255,.76);font-size:12px;font-weight:850;cursor:pointer}.today-self-test.ready .today-self-test-actions button:not(:disabled){color:#456f4c;background:rgba(239,249,234,.9)}.today-self-test-actions button:disabled{cursor:not-allowed;opacity:.52}.self-test-view{display:grid;place-items:center;padding:clamp(18px,4vw,54px)}.self-test-view[hidden]{display:none!important}.self-test-stage{width:min(760px,100%)}.self-test-card,.self-test-complete{padding:clamp(24px,5vw,52px);border:1px solid rgba(255,255,255,.84);border-radius:30px;background:rgba(252,254,251,.82);box-shadow:0 20px 60px rgba(43,70,54,.1)}.self-test-card header{display:flex;align-items:center;justify-content:space-between;gap:14px;color:#789080;font-size:11px;font-weight:900;letter-spacing:.1em}.self-test-card header button{border:0;color:#6b7c70;background:transparent;font-size:12px;font-weight:800;cursor:pointer}.self-test-word{display:block;width:100%;margin:clamp(26px,5vw,50px) 0 8px;padding:8px;border:0;border-radius:20px;color:var(--ink);background:transparent;font:800 clamp(48px,8vw,82px)/1 var(--english-font);letter-spacing:-2px;cursor:pointer}.self-test-word.masked{min-height:90px;background:linear-gradient(105deg,#e0e7df,#f2f5ef,#e0e7df);color:transparent!important}.self-test-phon{margin:0 0 25px;color:var(--text-3);font-family:var(--english-font);text-align:center}.self-test-meanings{display:grid;gap:8px;padding-top:18px;border-top:1px solid rgba(106,133,111,.13);cursor:pointer}.self-test-meaning{display:flex;gap:11px;padding:11px 3px;color:#405147}.self-test-meaning .pos{min-width:34px;color:#789080;font-size:12px;font-style:italic;font-weight:800}.self-test-meaning strong{font-size:16px}.self-test-meaning.masked{height:26px;padding:0;border-radius:10px;background:linear-gradient(105deg,#e1e8e1,#f6f8f4,#e1e8e1);color:transparent!important}.self-test-meaning.masked>*{visibility:hidden}.self-test-answer-hint{margin:26px 0 12px;color:var(--text-3);font-size:11px;text-align:center}.self-test-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.self-test-actions button{min-height:52px;border:1px solid rgba(104,132,111,.15);border-radius:15px;background:rgba(247,250,246,.92);font-size:14px;font-weight:850;cursor:pointer}.self-test-actions [data-self-test-choice="unfamiliar"]{color:#a2534b;background:#fae9e5}.self-test-actions [data-self-test-choice="uncertain"]{color:#886d2c;background:#faf1d7}.self-test-actions [data-self-test-choice="familiar"]{color:#477747;background:#e5f1df}.self-test-complete{display:flex;min-height:260px;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.self-test-complete strong{font-size:24px}.self-test-complete span{color:var(--text-3);font-size:13px}.self-test-complete button{margin-top:10px;padding:11px 18px;border:0;border-radius:13px;color:#fff;background:#6b9a69;font-weight:850;cursor:pointer}
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){.today-self-test{align-items:flex-start;flex-direction:column;padding:12px}.today-self-test-actions{width:100%}.today-self-test-actions button{min-width:0;flex:1;font-size:11px}.self-test-view{padding:14px}.self-test-card,.self-test-complete{padding:24px 18px;border-radius:24px}.self-test-word{min-height:72px;font-size:52px}.self-test-actions button{min-height:50px;font-size:13px}}
@media(min-width:760px){
  .mobile-fullscreen-btn{display:none!important}
  .fullscreen-tab{display:flex!important}
}
@media(max-width:759px), (min-width:760px) and (max-width:1180px) and (orientation:portrait){
  .topbar-left{max-width:calc(100% - 94px)}
  .topbar-actions{gap:6px}
  .fullscreen-tab{display:none!important}
  .mobile-fullscreen-btn{display:grid!important}
  .fullscreen-btn{width:40px;height:40px}
}

/* Portrait artwork must remain portrait on phones: use its full width from the
   top rather than cutting a landscape-shaped slice out of a long image. */
@media(max-width:759px){
  :root[data-study-device="mobile"]:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]) :is(.word-card,.appearance-preview){background-position:top center;background-size:100% auto;background-repeat:repeat-y}
}

/* Phone portrait scenes are painted by the page canvas itself.  The browser's
   top safe area is then part of the same image instead of exposing a black
   strip before #app starts. */
@media(max-width:759px){
  :root[data-study-device="mobile"]:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]){background-color:#060812;background-image:var(--landscape);background-position:top center;background-size:100% auto;background-repeat:repeat-y}
  :root[data-study-device="mobile"]:is([data-study-background="grassland-boat"],[data-study-background="snow-lake"],[data-study-background="autumn-grove"],[data-study-background="winter-solitude"],[data-study-background="milkyway-shore"],[data-study-background="balloon-dawn"],[data-study-background="alpine-lake-mobile"],[data-study-background="star-vortex"],[data-study-background="beacon-storm"],[data-study-background="autumn-waterfall"]) :is(body,#app,#viewCards){background-color:transparent;background-image:none}
}
