/* Winter Days — a cream-and-berry travel scrapbook. */
:root{
  --bg:#fff8ef;--ink:#513c40;--green:#9c425b;--muted:#806b70;
  --line:#efdfd5;--orange:#a83f59;--white:#fffdfa;
  --gold:#bb842b;--wine:#af3f59;--pink:#f7d4d7;--mint:#e6ede0;
}
body{background:radial-gradient(circle at 100% 0,#ffe3dd 0,transparent 36%),radial-gradient(circle at 0 35%,#fff0d3 0,transparent 31%),var(--bg)}
header{padding-top:calc(22px + env(safe-area-inset-top));gap:10px}
.brand{display:flex;align-items:center;gap:8px;letter-spacing:1px;font-size:15px;font-weight:800;color:#904057}
.brand:first-letter{font-size:inherit}.brand .brand-star{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:#f9dcdb;color:#a83f59;font-size:23px;transform:rotate(-7deg)}
.brand .brand-en{font-size:8px;font-weight:650;letter-spacing:1.5px;color:#907077}
.pill{background:#fffdf7;border-color:#edd9d2;color:#8a6570;border-radius:10px;font-size:9px}
.hero{position:relative;padding:30px 0 23px}.hero::after{content:"✳";position:absolute;right:1px;top:31px;color:#dca54e;font-size:28px;transform:rotate(13deg);pointer-events:none}
.hero h1{font-family:"Arial Rounded MT Bold","PingFang SC","Microsoft YaHei",sans-serif;font-weight:800;font-size:clamp(27px,5.5vw,35px);letter-spacing:-.6px;line-height:1.45;padding-right:28px;margin-bottom:12px}
.eyebrow{color:#ad5067;letter-spacing:1.6px;font-size:9px}.hero>p:last-child{color:#836b71;font-size:12px;max-width:560px;line-height:1.9}
.season-card{position:relative;isolation:isolate;overflow:hidden;min-height:256px;margin:0 0 25px;border:1px solid #edc4bf;border-radius:25px;background:#fbe0d9;box-shadow:0 6px 0 #efdfd1,0 14px 28px #91514408}
.season-card>img{position:absolute;right:-4px;bottom:0;width:66%;height:100%;object-fit:cover;object-position:center}
.season-card::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,#fbe0d9 24%,#fbe0d9c9 40%,transparent 62%);pointer-events:none}
.season-copy{position:relative;z-index:1;padding:29px 28px;max-width:59%;color:#7f3548}
.season-copy>span{display:inline-block;padding:6px 9px;border:1px solid #b65c6c66;border-radius:7px;font-size:8px;letter-spacing:1.5px;transform:rotate(-3deg);background:#fff6ebbd}
.season-copy h2{font-size:27px;font-weight:800;line-height:1.5;letter-spacing:-.5px;margin:17px 0 9px}
.season-copy p{color:#8c5961;font-size:11px;line-height:1.9;margin:0;max-width:210px}
.season-stamp{position:absolute;z-index:1;left:28px;bottom:20px;color:#8c4351;background:#fff6e9;padding:6px 10px;border:1px dashed #c78a83;border-radius:6px;font-size:9px;letter-spacing:1px;transform:rotate(-3deg)}
.summary{border:1px solid #ebd8cf;border-radius:16px;background:#fffdf6;padding:16px 18px}.summary strong{font-size:13px}.summary small{line-height:1.7}
button{border-radius:12px;transition:background .18s,transform .18s,box-shadow .18s}button:active{transform:translateY(1px)}
.primary{background:var(--wine);border-color:var(--wine);box-shadow:0 3px 0 #88344722;color:#fffdfa;font-weight:650}.primary:hover{background:#97364f;border-color:#97364f}
.small{background:#fffaf4;border-color:#e5cfc7;color:#884457}.primary.small{background:var(--wine);color:#fffdfa;border-color:var(--wine)}.outline{border-color:#ce9c9d;border-radius:15px;background:#fff3ed;color:#99465a}
.day-strip{padding-top:5px;padding-bottom:14px;gap:11px}.day{background:#fffdf6;border-color:#e9d6ce;border-radius:17px;min-height:113px;color:#73545b}.day small{color:#9c737c}.day strong{font-size:15px}.day>span{color:#947b7b}
.day.selected{background:#b24460;border:1px solid #a43b55;box-shadow:0 5px 0 #eac7cb;transform:rotate(-2deg)}.day.selected small{color:#ffe4cb}.day.selected>span{color:#ffe6e6}
.hotel{border:1px solid #e6d6e5;border-radius:18px;background:#f4eaf2;gap:12px}.hotel>span{display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;border-radius:12px;background:#fffcf6;color:#9c5b81;font-size:26px}.hotel strong{color:#684a60}.hotel p{color:#826d7d}
h2,h3{letter-spacing:-.3px}.section-head h2{font-size:21px}.section-head h3{font-size:15px}.stop-card,.ticket,.panel,.check-group{background:#fffdfa;border:1px solid #efddd2;border-radius:20px;box-shadow:0 4px 0 #f2e7dc55}
.time{color:#a34760}.time:after{background:#d89b55;box-shadow:0 0 0 4px var(--bg);border-radius:3px;transform:rotate(45deg)}.time span{background:#ead7cc}
.tag,.stop-card .tag{background:#fff0d6;color:#916729;border-radius:7px}.tag.green{background:#e8efdf;color:#55704a}.location{color:#88727b}.note{color:#7d6870}.weather{color:#8e6a37;background:#fff7e8;display:table;padding:6px 8px;border-radius:8px;line-height:1.6}
.card-actions{border-color:#f1e4dc}.text-link{color:#9e455e}.quiet{color:#896a73}.danger{color:#b13d59}.info{background:#fff0de;border:1px solid #efd7b6;border-radius:14px;color:#795d4c}.footnote{color:#8a777b}
.progress{height:7px;background:#f0e3dc;overflow:hidden}.progress span{background:repeating-linear-gradient(115deg,#ba5069 0 12px,#d67589 12px 24px);border-radius:10px}.check-row{border-color:#f2e4dc}.check-row input{accent-color:#b24460}.check-group>.eyebrow{color:#a34760}.done{color:#a39192}
.field{color:#81636c}.field input,.field textarea{border-radius:12px;border-color:#e8d7cf;background:#fffcf7;color:var(--ink)}.field input:focus,.field textarea:focus{border-color:#c78191}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline-color:#b24460}
nav{background:#fffbf5f5;border-top:1px solid #ead4ca;box-shadow:0 -6px 22px #af718008;gap:clamp(8px,5vw,70px)}nav button{color:#ac8e96;border-radius:15px;min-width:62px}nav button.active{background:#f9e2e3;color:#aa3f5a}nav button span{font-size:10px;font-weight:650}
.sync-status{border-bottom:1px dashed #e5cdc8;font-size:10px;color:#93757d;padding-top:7px}.sync-status>div{display:flex;flex-shrink:0}.sync-status .quiet{font-size:11px;padding-left:6px;padding-right:6px}
.empty>span{display:inline-block;font-size:34px;color:#ce9b54;background:#fff0d6;padding:3px 14px;border-radius:18px;transform:rotate(-7deg)}.empty h3{color:#8a5361;font-size:16px;font-weight:650}.empty p{color:#997e85}
dialog{background:#fffaf4;border-color:#e4bfc5;border-radius:23px;box-shadow:0 20px 70px #6d35422b}dialog::backdrop{background:#593e4955;backdrop-filter:blur(5px)}.error{background:#fce3df;color:#9b3f54;border-radius:12px}#toast{background:#864155;border:1px solid #ad697b;border-radius:14px;color:#fff8ee}
body.locked #auth-screen{max-width:480px;padding-top:10px;margin:14px auto 30px}
.login-art{position:relative;line-height:normal;font-size:initial;overflow:visible;margin:6px 0 31px;padding:9px 9px 31px;background:#fffdfa;border:1px solid #ecd8cb;border-radius:6px;box-shadow:0 6px 0 #f0e2d4;transform:rotate(-2deg)}
.login-art::before{content:"";position:absolute;z-index:2;top:-12px;left:calc(50% - 34px);width:68px;height:24px;background:#edd19bb3;border-left:2px dotted #e7c68c;border-right:2px dotted #e7c68c;transform:rotate(6deg)}
.login-art img{display:block;width:100%;aspect-ratio:2.1;object-fit:cover;border-radius:3px}.postcard-label{position:absolute;bottom:11px;left:0;width:100%;text-align:center;font-size:8px;letter-spacing:2px;font-weight:650;color:#aa6976}
#auth-screen h1{font-family:"Arial Rounded MT Bold","PingFang SC","Microsoft YaHei",sans-serif;font-size:29px;font-weight:800;line-height:1.5;letter-spacing:-.5px;color:#873e53;margin:11px 0}
.login-intro{font-size:12px;line-height:1.95;color:#8a7078;margin:12px 0 25px}#login-form .primary{padding:14px;letter-spacing:.5px;border-radius:14px;margin-top:5px}#login-form .primary span{color:#ffe1ba;margin-left:8px}#login-message{color:#a84d64;font-size:12px;line-height:1.8;min-height:22px}
@media(min-width:700px){.hero{padding-top:36px}.hero::after{top:36px}.season-card{min-height:252px}.season-copy{padding:30px}.season-copy h2{font-size:29px}}
@media(max-width:540px){
  .brand{font-size:14px;gap:6px}.brand .brand-en{font-size:7px;letter-spacing:1px}.brand .brand-star{width:30px;height:30px;font-size:21px}.pill{font-size:8px;padding:7px 8px}
  .hero{padding-top:25px}.hero::after{font-size:24px;top:27px}.hero h1{font-size:27px}.hero>p:last-child{font-size:11px}
  .season-card{min-height:330px;border-radius:22px}.season-card>img{width:100%;height:auto;bottom:0;right:0;object-fit:contain}.season-card::after{background:linear-gradient(180deg,#fbe0d9 3%,#fbe0d9f0 21%,transparent 62%)}
  .season-copy{padding:21px 22px;max-width:100%}.season-copy h2{font-size:25px;margin:12px 0 7px}.season-copy p{font-size:10px;max-width:none}.season-stamp{left:auto;right:13px;bottom:12px;font-size:8px;padding:5px 7px;background:#fff7e9ed}
  .summary{padding:14px}.hotel{padding:17px}.stop-card{padding:16px}.card-actions{gap:11px}.login-art img{aspect-ratio:1.9}.login-intro{font-size:12px}#auth-screen h1{font-size:27px}
}
@media(max-width:360px){.brand .brand-en{display:none}.hero h1{font-size:24px}.season-card{min-height:315px}.season-copy h2{font-size:23px}.season-copy{padding:19px}nav{gap:3px}nav button{padding:5px 15px}.hotel>span{width:31px;height:34px}.login-art img{aspect-ratio:1.8}}
@media(prefers-reduced-motion:no-preference){.hero::after{animation:star-nod 5s ease-in-out infinite}@keyframes star-nod{0%,100%{transform:rotate(8deg) scale(1)}50%{transform:rotate(28deg) scale(1.1)}}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* Sparse decorative snowfall lives below the interface, never above its controls. */
body{isolation:isolate}.snowfall{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;user-select:none;contain:strict}
header,main,#auth-screen{position:relative;z-index:1}
main,#auth-screen{background:linear-gradient(90deg,transparent,#fff8eff5 22px,#fff8eff5 calc(100% - 22px),transparent)}
.snowfall span{position:absolute;top:-30px;left:6%;font-size:12px;color:#be8b9a;opacity:0;animation:snow-float 25s linear infinite;pointer-events:none}
.snowfall span:nth-child(2){left:19%;font-size:8px;animation-duration:31s;animation-delay:-15s}
.snowfall span:nth-child(3){left:34%;font-size:10px;animation-duration:28s;animation-delay:-8s}
.snowfall span:nth-child(4){left:46%;font-size:20px;animation-duration:34s;animation-delay:-24s}
.snowfall span:nth-child(5){left:61%;font-size:9px;animation-duration:30s;animation-delay:-19s}
.snowfall span:nth-child(6){left:76%;font-size:12px;animation-duration:27s;animation-delay:-3s}
.snowfall span:nth-child(7){left:88%;font-size:22px;animation-duration:33s;animation-delay:-13s}
.snowfall span:nth-child(8){left:96%;font-size:10px;animation-duration:29s;animation-delay:-22s}
@keyframes snow-float{0%{transform:translate3d(-8px,-20px,0) rotate(0deg);opacity:0}8%,86%{opacity:.28}50%{transform:translate3d(10px,50vh,0) rotate(80deg)}100%{transform:translate3d(-5px,calc(100vh + 50px),0) rotate(170deg);opacity:0}}
.page-hidden .snowfall span{animation-play-state:paused}
@media(max-width:540px){.snowfall span:nth-child(2),.snowfall span:nth-child(4),.snowfall span:nth-child(7){display:none}}
@media(prefers-reduced-motion:reduce){.snowfall{display:none}}
.rental-ribbon{display:flex;gap:12px;align-items:center;padding:16px 4px;margin:7px 0;color:#7f5965}.rental-ribbon>span{display:grid;place-items:center;background:#f5e0df;border-radius:12px;width:34px;height:34px;font-size:23px;flex-shrink:0}.rental-ribbon>div{flex:1}.rental-ribbon strong{display:block;font-size:12px;margin-bottom:5px}.rental-ribbon small{font-size:10px;line-height:1.7;color:#896d75}.rental-ribbon .quiet{font-size:11px;padding:8px 4px;flex-shrink:0}
.route-overview{background:#fffaf4;border:1px dashed #dcbeb9;border-radius:15px;margin:2px 0 20px;overflow:hidden}.route-overview>summary{cursor:pointer;padding:15px;font-size:13px;font-weight:650;color:#975167;line-height:1.8}.route-overview>summary>span{display:block;font-size:10px;font-weight:400;color:#987b81;padding-left:17px}.route-list{padding:0 14px 10px}.route-list>button{display:flex;gap:10px;align-items:center;width:100%;border:0;border-top:1px solid #f0e3dc;border-radius:0;background:transparent;text-align:left;padding:13px 1px;min-height:48px}.route-list>button>span{font-size:11px;color:#ac6579;font-variant-numeric:tabular-nums;flex-shrink:0}.route-list strong{font-size:12px;font-weight:550;flex:1;line-height:1.7}.route-list small{font-size:9px;color:#967745}
.day-route{padding:20px;background:#fff0df;border:1px solid #edd7bd;border-radius:18px;margin-bottom:15px}.day-route .eyebrow{color:#ad7545;margin-bottom:9px}.day-route h3{font-size:17px;overflow-wrap:anywhere}.day-route>p:not(.eyebrow){font-size:12px;color:#906d5b;line-height:1.9;margin:10px 0}.rental-event{background:#fffaf2;border:1px dashed #dfb599;color:#a15c58;font-size:12px;padding:10px 12px;border-radius:10px;line-height:1.8;margin:12px 0;overflow-wrap:anywhere}.route-weather{display:block;color:#9a7d69;font-size:10px;line-height:1.8;margin-top:8px}.rental-stops{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:20px}.rental-stops strong{display:block;font-size:13px;line-height:1.8;margin-top:10px}.rental-stops p{font-size:12px;overflow-wrap:anywhere}@media(max-width:360px){.rental-stops{grid-template-columns:1fr}.day-route{padding:17px}}
