/* 首页语文活动 */
.header-heading { position:relative; min-height:112px; display:grid; align-content:center; }
.header-heading > .app-title { margin-top:12px; margin-bottom:6px; }
.language-travel-entry { position:absolute; left:0; top:2px; bottom:2px; width:clamp(240px,27%,350px); display:grid; grid-template-columns:94px minmax(0,1fr); gap:8px; padding:8px; border:1px solid #dbb991; border-radius:19px; background:#fffaf0ed; box-shadow:0 3px 0 #e8d4af; text-align:left; }
.language-travel-entry[hidden] { display:none; }
.language-travel-entry button { cursor:pointer; font:inherit; color:#75452b; border:0; background:transparent; padding:0; min-width:0; }
.travel-passport-entry { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; border-right:1px dashed #d6ba91!important; }
.travel-book-image { width:70px; height:70px; object-fit:contain; clip-path:polygon(14% 18%,65% 8%,70% 10%,86% 72%,85% 81%,80% 85%,47% 91%,43% 94%,35% 91%,30% 91%,27% 89%,15% 29%); }
.travel-passport-entry > span { font-size:11px; font-weight:850; white-space:nowrap; letter-spacing:-.3px; }
.travel-current-stamp { display:flex; align-items:center; gap:6px; text-align:left; }
.travel-current-stamp > img { width:52px; height:52px; object-fit:contain; border-radius:50%; }
.travel-current-copy { display:flex; flex:1; min-width:0; flex-direction:column; gap:3px; font-size:11px; line-height:1.35; }
.travel-current-copy > strong { font-size:14px; color:#994c25; }
.travel-current-copy > span:nth-child(2) { overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow-wrap:anywhere; }
.travel-progress-label { font-weight:800; color:#347462; }
.travel-progress-track { height:5px; background:#e8dfcd; border-radius:6px; overflow:hidden; }
.travel-progress-track > span { display:block; height:100%; background:#509980; border-radius:6px; transition:width .2s; }
.language-travel-entry button:hover img { transform:scale(1.06); }
.language-travel-entry button img { transition:transform .2s; }
.travel-overlay { display:none; position:fixed; inset:0; z-index:3600; background:#352c20a6; padding:24px; place-items:center; backdrop-filter:blur(5px); }
.travel-overlay.open { display:grid; }
.travel-dialog { width:min(650px,100%); max-height:calc(100dvh - 48px); box-sizing:border-box; overflow:auto; border:2px solid #c9a276; border-radius:25px; background:#fffaf0; padding:22px; color:#65452e; box-shadow:0 24px 80px #26170755; overscroll-behavior:contain; }
.travel-dialog > header { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:14px; }
.travel-dialog > header > div { display:flex; align-items:center; gap:9px; }
.travel-dialog h2 { font-size:23px; margin:0; color:#895033; }
.travel-close,.travel-back { border:0; border-radius:50%; background:#efe2ca; color:#75452b; width:38px; height:38px; font-size:28px; cursor:pointer; flex:none; }
.travel-passport-dialog { width:min(800px,100%); background:linear-gradient(90deg,#fffbef 49.5%,#e5d3af 50%,#fffaf0 50.5%); }
.travel-passport-intro { font-size:14px; line-height:1.85; padding:0 4px 15px; color:#80674b; }
.travel-passport-pages { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.travel-passport-slot { display:flex; flex-direction:column; align-items:center; gap:5px; font:inherit; color:#765336; border:1px dashed #d9bc91; border-radius:18px; padding:12px; background:#fffef66e; cursor:pointer; }
.travel-passport-slot:disabled { cursor:default; color:#b4a082; }
.travel-passport-slot img,.travel-empty-stamp { width:min(130px,100%); aspect-ratio:1; object-fit:contain; border-radius:50%; }
.travel-empty-stamp { display:block; border:2px dashed #dfceb3; background:#f8f0df88; box-sizing:border-box; }
.travel-pending-image { opacity:.4; filter:grayscale(1); }
.travel-passport-slot strong { font-size:16px; }
.travel-passport-slot small { min-height:18px; color:#357663; }
.travel-passport-slot.collected { border-style:solid; border-color:#bfa16d; }
.travel-honor { display:block; text-align:center; margin-top:18px; color:#9b805a; font-size:16px; font-weight:800; }
.travel-honor.gold { color:#a0680c; border:1px solid #d6b64a; background:linear-gradient(100deg,#fff8dc,#fce6a5,#fff8dc); border-radius:22px; padding:10px 20px; }
.travel-register-head { display:flex; gap:18px; align-items:center; margin-bottom:20px; }
.travel-register-head > img { width:86px; height:86px; border-radius:50%; }
.travel-register-head > div { flex:1; min-width:0; }
.travel-register-head strong { display:block; font-size:18px; overflow-wrap:anywhere; white-space:pre-line; }
.travel-register-head p { display:flex; gap:16px; flex-wrap:wrap; align-items:center; margin:8px 0 0; color:#33785d; font-weight:800; }
.travel-register-head p span { color:#a48a65; font-size:12px; font-weight:500; }
.travel-student-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:9px; }
.travel-student { position:relative; min-height:57px; padding:8px 4px; font-family:inherit; line-height:1.2; font-size:23px; font-weight:800; border:1px solid #d9c8ae; border-radius:13px; background:#fffdf7; color:#876b47; cursor:pointer; touch-action:manipulation; }
.travel-student.done { border-color:#57977a; color:#27674b; background:#def0e2; box-shadow:inset 0 -3px 0 #bddbc8; }
.travel-student > span { position:absolute; top:3px; right:5px; font-size:12px; }
.travel-overlay button:focus-visible,.language-travel-entry button:focus-visible { outline:3px solid #c1812a; outline-offset:3px; }
.travel-reward { position:relative; isolation:isolate; display:flex; flex-direction:column; align-items:center; padding:10px 0 24px; overflow:hidden; }
.travel-reward > img { width:min(360px,72vw); max-height:48dvh; object-fit:contain; border-radius:50%; animation:travel-stamp-pop .65s cubic-bezier(.18,1.55,.4,1) both; z-index:1; }
.travel-reward > strong { margin-top:16px; font-size:30px; color:#955326; }
.travel-reward > span { margin-top:8px; color:#357458; font-size:19px; font-weight:800; }
.travel-reward-rays { position:absolute; top:0; left:50%; width:500px; height:500px; max-width:90vw; max-height:90vw; transform:translateX(-50%); background:repeating-conic-gradient(from 0deg,#f5c95230 0deg 14deg,transparent 14deg 30deg); border-radius:50%; mask-image:radial-gradient(#000,transparent 68%); z-index:-1; animation:travel-rays 12s linear infinite; }
.travel-confetti { position:absolute; inset:0; pointer-events:none; }
.travel-confetti i { position:absolute; left:var(--x); top:-10%; width:9px; height:16px; background:#d7a735; border-radius:2px; animation:travel-confetti 2.6s calc(var(--i) * -.08s) ease-out both; }
.travel-confetti i:nth-child(3n) { background:#619c7f; }
.travel-confetti i:nth-child(3n + 1) { background:#c46b4a; }
@keyframes travel-stamp-pop { from { opacity:0; transform:scale(1.7) rotate(-18deg); } to { opacity:1; transform:scale(1) rotate(0); } }
@keyframes travel-rays { to { transform:translateX(-50%) rotate(360deg); } }
@keyframes travel-confetti { from { opacity:1; transform:translateY(-30px) rotate(0); } to { opacity:0; transform:translateY(550px) rotate(calc(var(--turn) * 380deg)); } }
.travel-settings { display:grid; gap:16px; max-width:850px; }
.travel-settings label { display:grid; gap:6px; font-size:14px; font-weight:700; color:#76593e; }
.travel-settings input:not([type=checkbox]),.travel-settings textarea,.travel-settings select { box-sizing:border-box; width:100%; border:1px solid #d4c5ae; border-radius:9px; padding:10px 12px; background:#fffef9; font:inherit; color:#493e2d; }
.travel-settings textarea { resize:vertical; line-height:1.6; }
.travel-settings label.travel-enabled { display:flex; align-items:center; gap:8px; }
.travel-settings-stamps { display:grid; gap:10px; }
.travel-settings-stamp { display:flex; gap:14px; align-items:center; padding:12px; border:1px solid #e4d9c8; border-radius:16px; background:#fffdf7; }
.travel-settings-stamp > img { width:72px; height:72px; border-radius:50%; }
.travel-settings-stamp > div { display:grid; gap:7px; flex:1; min-width:0; }
.travel-settings-stamp small { color:#54826a; }
.travel-settings > button { justify-self:start; }
#travelSettingsStatus { color:#2f7d55; }
@media (min-width:761px) and (max-width:1250px) {
    .header-heading { padding-left:300px; min-height:112px; }
    .language-travel-entry { width:280px; box-sizing:border-box; }
    .header-heading > .app-title { font-size:clamp(1.4rem,3vw,2rem); }
    .header-heading .slogan { font-size:14px; }
    .header-heading .header-subline { gap:7px; }
}
@media (max-width:760px) {
    .header-heading { display:flex; flex-direction:column; align-items:center; gap:4px; }
    .header-heading > .app-title { order:0; margin:6px 0; }
    .header-heading > .header-subline { order:1; }
    .language-travel-entry { order:2; position:static; width:min(380px,100%); box-sizing:border-box; margin:9px auto 13px; grid-template-columns:104px minmax(0,1fr); }
    .travel-current-stamp > img { width:65px; height:65px; }
    .travel-current-copy { font-size:12px; }
    .travel-overlay { padding:12px; }
    .travel-dialog { padding:16px; max-height:calc(100dvh - 24px); border-radius:20px; }
    .travel-dialog h2 { font-size:21px; }
    .travel-passport-intro { font-size:12px; line-height:1.7; }
    .travel-passport-pages { gap:9px; grid-template-columns:repeat(2,minmax(0,1fr)); }
    .travel-passport-slot { padding:10px; }
    .travel-passport-slot img,.travel-empty-stamp { width:110px; }
    .travel-student-grid { grid-template-columns:repeat(6,minmax(0,1fr)); gap:6px; }
    .travel-student { min-height:48px; font-size:20px; border-radius:10px; }
    .travel-register-head { gap:11px; }
    .travel-register-head > img { width:66px; height:66px; }
    .travel-register-head strong { font-size:16px; }
    .travel-settings-stamp { gap:9px; padding:10px; flex-wrap:wrap; }
    .travel-settings-stamp > img { width:48px; height:48px; }
    .travel-settings-stamp > button { margin-left:auto; }
}
@media (prefers-reduced-motion:reduce) {
    .travel-reward > img,.travel-reward-rays,.travel-confetti i { animation:none; }
    .travel-confetti { display:none; }
    .language-travel-entry button img,.travel-progress-track > span { transition:none; }
}

body.garden-syncing .language-travel-entry { pointer-events:none; opacity:.72; }

.travel-mobile-settings-bar { display:none; }
@media (max-width:720px) {
    .travel-mobile-settings-bar { display:flex; justify-content:space-between; gap:12px; padding:10px 12px 0; }
    .travel-mobile-settings-bar button { min-height:36px; padding:6px 12px; font-size:13px; }
}

body.travel-dialog-open { overflow:hidden; }
body.travel-dialog-open #cloud-status, body.travel-dialog-open #undo-float { visibility:hidden; }
