@charset "UTF-8";
:root{--paper:#f8f5ed;--white:#fffef9;--ink:#2c4439;--muted:#727a6b;--line:#e5e5d9;--green:#47674d;--sage:#e9eedf;--orange:#bf6039;--peach:#f7e7d6;--gold:#c4a65e;--serif:"Songti SC","STSong","SimSun",serif;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,label{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button{border:0;background:none}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #ca8650;outline-offset:4px}svg.icon{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle;flex-shrink:0}[data-icon]{display:inline-flex;align-items:center;justify-content:center}button{touch-action:manipulation}.site-shell{max-width:1080px;margin:0 auto;padding:0 40px}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:650;letter-spacing:2px}.brand>span:first-child{width:35px;height:40px;color:var(--orange)}.brand>span:first-child .icon{width:29px;height:29px;transform:rotate(-15deg)}.brand small{display:block;font-size:8px;letter-spacing:1.9px;font-weight:500;margin-top:2px;color:var(--muted)}.icon-button{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;background:var(--white)}.icon-button:hover{background:var(--sage)}
.hero{display:grid;grid-template-columns:.9fr 1.2fr;gap:36px;padding:42px 0 32px;align-items:center}.eyebrow{font-size:9px;font-weight:600;letter-spacing:2px;margin:0 0 14px;color:var(--muted)}.small-star{color:var(--orange);font-size:17px;vertical-align:middle;margin-right:4px}.hero h1{font-family:var(--serif);font-size:55px;line-height:1.32;font-weight:600;margin:0 0 15px;letter-spacing:2px}.hero h1 span{position:relative;z-index:0}.hero h1 span:after{position:absolute;content:"";left:-2px;right:0;bottom:3px;height:12px;border-radius:40%;background:#e5bb6f77;z-index:-1;transform:rotate(-2deg)}.hero h1 i{font-style:normal;color:var(--orange)}.hero-subtitle{color:var(--muted);letter-spacing:2px;font-size:13px;margin:0 0 22px}.destination{font-size:15px;font-weight:600;display:flex;align-items:center;gap:9px}.destination .icon{width:17px;height:17px;color:var(--orange)}.destination b{font-weight:400;color:#a0a590;margin:0 3px}.trip-dates{display:flex;align-items:center;gap:13px;font-size:11px;margin:8px 0 16px;color:var(--muted);letter-spacing:.6px}.date-divider{height:11px;width:1px;background:#c9cabb}.letter-hint{font-size:11px;display:flex;gap:7px;align-items:center;color:var(--orange);padding:4px 0;min-height:38px}.letter-hint .icon{width:17px;height:17px}.hero-art{position:relative;transform:rotate(1.3deg);background:var(--white);padding:9px 9px 0;box-shadow:0 5px 18px #443b2420}.hero-art:before{content:"";position:absolute;width:86px;height:26px;background:#eee4bf9e;top:-12px;left:42%;transform:rotate(-6deg);z-index:2;clip-path:polygon(0 6%,5% 0,10% 8%,95% 0,100% 12%,97% 91%,92% 100%,5% 95%,0 100%)}.hero-art img{display:block;width:100%;height:330px;object-fit:cover;object-position:42% 55%;background:#e2c993}.art-caption{display:flex;justify-content:space-between;align-items:center;padding:7px 7px 8px;font-size:8px;letter-spacing:1.4px;color:#8b826b}.art-caption>span:last-child{font-size:20px;color:var(--orange)}.countdown-stamp{position:absolute;right:16px;bottom:20px;width:77px;height:77px;background:#fcf6e7ee;border:1.5px solid #b16a42;outline:4px solid #fcf6e7d9;border-radius:50%;transform:rotate(-10deg);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#8c4c2f;font-size:10px;line-height:1.15}.countdown-stamp strong{font:30px/1.15 Georgia,serif}.countdown-stamp>span:first-child{font-size:9px;letter-spacing:1px}
.progress-card{background:var(--green);color:#fffcf0;border-radius:19px;padding:22px 26px 0;overflow:hidden;position:relative}.progress-main{display:flex;align-items:center;justify-content:space-between;gap:12px}.progress-card .eyebrow{color:#d2ddbf;font-size:8px;letter-spacing:1.7px;margin-bottom:6px}.progress-card h2{font-family:var(--serif);font-size:22px;letter-spacing:1px;margin:0}.progress-card p:not(.eyebrow){font-size:11px;color:#d5dec8;margin:6px 0 0}.progress-ring{width:72px;height:72px;position:relative;flex-shrink:0}.progress-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.progress-ring circle{fill:none;stroke-width:3.5}.ring-track{stroke:#ffffff25}#ring-fill{stroke:#e2c887;stroke-linecap:round;stroke-dasharray:188.496;stroke-dashoffset:188.496;transition:stroke-dashoffset .5s}.progress-ring strong{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:27px Georgia,serif}.progress-ring small{font:10px var(--sans);margin-top:6px;margin-left:2px}.progress-bottom{display:flex;justify-content:space-between;align-items:center;padding:14px 0 16px;font-size:10px;color:#e0e6d5}.progress-bottom>span:last-child{display:flex;align-items:center;gap:5px;color:#e6d19c}.progress-bottom .icon{width:15px;height:15px}.progress-track{height:3px;background:#ffffff12;margin:0 -26px}.progress-track>span{display:block;height:100%;background:#e6c887;width:0;transition:width .4s}
#mode-content{padding-top:35px;min-height:430px;scroll-margin-top:20px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:0 0 18px}.section-heading .eyebrow{font-size:9px;letter-spacing:1.5px;margin:0 0 5px;color:var(--orange)}.section-heading h2{font-size:24px;font-family:var(--serif);font-weight:600;letter-spacing:.8px;margin:0}.section-heading>button{font-size:11px;display:flex;align-items:center;gap:4px;min-height:44px;padding-right:0;white-space:nowrap}.section-heading>button .icon{width:16px;height:16px}.packing-intro{font-size:11px;color:var(--muted);margin:-8px 0 18px}.tools-row{display:flex;gap:12px;align-items:center;margin-bottom:15px}.search-field{position:relative;display:flex;align-items:center;flex:1;background:#eeeee3;border:1px solid transparent;border-radius:11px;min-width:0}.search-field>span{position:absolute;left:13px;pointer-events:none;color:#8d9483}.search-field .icon{width:16px;height:16px}.search-field input{width:100%;height:43px;border:0;background:transparent;padding:0 14px 0 39px;color:var(--ink);border-radius:11px;font-size:12px;min-width:0}.search-field input::placeholder{color:#8c9184}.filter-button{font-size:11px;display:flex;align-items:center;gap:5px;white-space:nowrap;height:44px;padding:0 3px}.filter-button .mini-check{width:15px;height:15px;border:1px solid #acb09e;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}.filter-button .mini-check .icon{width:12px;height:12px;opacity:0}.filter-button[aria-pressed=true] .mini-check{background:var(--green);border-color:var(--green);color:#fff}.filter-button[aria-pressed=true] .mini-check .icon{opacity:1}.category-tabs{display:flex;gap:7px;overflow:auto;scrollbar-width:none;margin:0 0 18px;padding:1px 0 7px}.category-tabs::-webkit-scrollbar{display:none}.category-tab{flex-shrink:0;padding:8px 14px;min-height:37px;border:1px solid var(--line);border-radius:20px;font-size:11px;color:var(--muted);background:#fffdf6}.category-tab.active{background:var(--ink);border-color:var(--ink);color:#fffdf4}.packing-tip{display:flex;align-items:flex-start;gap:10px;border:1px dashed #d8ccaa;background:#f5eddc;padding:12px 14px;border-radius:10px;color:#837045;font-size:11px;margin:0 0 19px}.packing-tip>.icon{color:#ab8250;width:18px;height:18px;margin-top:1px}.packing-tip p{margin:0}.packing-tip strong{font-weight:600;color:#79623a}.list-section{background:var(--white);border:1px solid var(--line);border-radius:16px;margin-bottom:13px;overflow:hidden}.category-header{display:flex;align-items:center;gap:11px;width:100%;padding:17px 19px;text-align:left;min-height:78px}.category-icon{width:39px;height:39px;display:inline-flex;align-items:center;justify-content:center;background:var(--sage);color:var(--green);border-radius:12px;flex-shrink:0}.category-icon .icon{width:21px;height:21px}.category-header[data-color=daily] .category-icon{background:#faecd5;color:#a7813b}.category-header[data-color=wash] .category-icon{background:#eeeadf;color:#958269}.category-header[data-color=docs] .category-icon{background:#e9edf0;color:#6c8291}.category-header[data-color=health] .category-icon{background:#f3e6de;color:#b27f68}.category-header[data-color=extras] .category-icon{background:#f6efd7;color:#ac9756}.category-heading{flex:1;min-width:0}.category-heading strong{font-size:14px;font-weight:600;display:block;letter-spacing:.4px}.category-heading small{font-size:10px;color:var(--muted);display:block;margin-top:2px}.category-count{font-size:11px;color:#8b917e;white-space:nowrap}.category-header>.icon{width:15px;height:15px;color:#939780;transition:transform .2s}.category-header[aria-expanded=true]>.icon{transform:rotate(180deg)}.category-header[aria-expanded=true]{border-bottom:1px dashed var(--line)}.item-list{list-style:none;padding:0 19px;margin:0}.item{display:flex;position:relative;gap:8px;align-items:center;border-bottom:1px solid #efeee6;min-height:76px;transition:background .2s}.item:last-child{border-bottom:0}.item-main{display:flex;gap:13px;align-items:center;flex:1;padding:15px 0;cursor:pointer;min-width:0}.item input[type=checkbox]{position:absolute;opacity:0;width:25px;height:25px;left:0;margin:0}.check-decoration{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:1.5px solid #c8ceba;border-radius:8px;flex-shrink:0;background:#fffefa;transition:all .2s}.check-decoration .icon{width:15px;height:15px;opacity:0;transform:scale(.5);transition:all .16s}.item input:focus-visible+.check-decoration{outline:3px solid #ca8650;outline-offset:3px}.item input:checked+.check-decoration{background:var(--green);border-color:var(--green);color:#fff}.item input:checked+.check-decoration .icon{opacity:1;transform:scale(1)}.item-copy{min-width:0;flex:1}.item-title{font-size:13px;font-weight:500;display:block;line-height:1.55}.item-qty{font-size:10px;color:#8b907e;font-weight:400;margin-left:8px;white-space:nowrap}.item-note{font-size:10px;color:#939783;display:block;margin-top:3px;line-height:1.65}.item-note:empty{display:none}.item.done .item-title{text-decoration:line-through;color:#939b85}.item.done .item-note{color:#a6ad9a}.item.skipped .item-copy{opacity:.55}.item.skipped .check-decoration{border-style:dashed;background:#f2f0e8}.item.optional:not(.active):not(.done) .check-decoration{border-style:dashed}.optional-tag{font-size:9px;padding:1px 5px;background:#f5ecd9;color:#a28a58;border-radius:4px;display:inline-block;margin-right:4px}.skipped-tag{background:#eeece5;color:#93917f}.item-options{flex-shrink:0;min-width:36px;min-height:44px;color:#b0b49f;align-self:center;padding:8px 0 8px 9px}.item-options .icon{width:16px;height:16px}.category-footnote{font-size:10px;line-height:1.8;color:#8d8b73;padding:12px 17px;background:#f7f5ec;margin:0 13px 13px;border-radius:8px}.empty-state{text-align:center;border:1px dashed var(--line);border-radius:15px;padding:38px 20px;color:var(--muted)}.empty-state>.icon{width:32px;height:32px;color:var(--green)}.empty-state h3{font-size:16px;font-family:var(--serif);margin:12px 0 5px}.empty-state p{font-size:12px}.empty-state button{margin-top:10px}.mode-note{font-size:12px;color:var(--muted);margin:0 0 20px;line-height:1.9}.mini-progress{display:flex;gap:10px;align-items:center;margin:15px 0 23px}.mini-progress>span{font-size:11px;white-space:nowrap;color:var(--muted)}.mini-progress>div{flex:1;height:5px;background:#e8e9db;border-radius:8px;overflow:hidden}.mini-progress i{height:100%;display:block;background:var(--green);transition:width .25s}.today-banner{background:#edeede;border-radius:15px;padding:23px;margin:0 0 20px;position:relative;overflow:hidden}.today-banner>.icon{position:absolute;right:20px;top:20px;width:65px;height:65px;color:#bca873;stroke-width:1}.today-banner h3{font:22px var(--serif);margin:5px 0 9px}.today-banner p{font-size:11px;color:var(--muted);margin:0;max-width:75%}.today-banner .eyebrow{font-size:9px;letter-spacing:1px;margin-bottom:6px}.today-reset{font-size:11px;color:var(--muted);display:block;min-height:44px;margin:auto;text-decoration:underline;text-underline-offset:4px}.memory-note{font-family:var(--serif);font-size:19px;line-height:1.8;letter-spacing:1px;margin:0 0 22px;max-width:500px}.memory-note span{color:var(--orange)}.surprise-card{background:#efe7d8;padding:25px;text-align:center;border-radius:17px;position:relative;margin:18px 0 23px;min-height:180px;display:flex;align-items:center;flex-direction:column;justify-content:center}.surprise-card:before{content:"✳";position:absolute;font-size:38px;color:#b78d5480;left:18px;top:14px;transform:rotate(-10deg)}.surprise-card .eyebrow{font-size:9px;margin:0 0 10px;color:#a48764}.surprise-card h3{font:20px/1.8 var(--serif);margin:0 0 13px}.outline-button{border:1px solid #c6b79b;min-height:40px;padding:8px 16px;border-radius:22px;font-size:11px}.memory-item{background:var(--white);border:1px solid var(--line);border-radius:13px;margin:10px 0;padding:0 17px}.memory-item .item{border:0;min-height:67px}.memory-item .item-note{font-size:11px}.passport-stamp{font:12px Georgia,serif;color:#9c7950;border:1px solid #c9b48c;padding:14px 18px;margin:27px auto 14px;max-width:270px;text-align:center;transform:rotate(-3deg);letter-spacing:2px;outline:1px solid #c9b48c;outline-offset:4px}.passport-stamp span{display:block;font:10px var(--sans);letter-spacing:1px;margin:4px 0}.page-footer{text-align:center;padding:34px 0 126px;color:#90927d}.page-footer>.icon{width:18px;height:18px;color:#b99975}.page-footer p{font-family:var(--serif);font-size:12px;letter-spacing:.7px;margin:10px 0 8px}.page-footer small{font-size:9px;display:block}.text-button{font-size:10px;color:#90927d;text-decoration:underline;text-underline-offset:4px;min-height:40px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,620px);padding:8px 22px calc(8px + env(safe-area-inset-bottom));height:calc(77px + env(safe-area-inset-bottom));z-index:15;display:flex;justify-content:space-around;background:#fffdf5f5;border:1px solid #e8e6d9;border-bottom:none;border-radius:22px 22px 0 0;backdrop-filter:blur(14px);box-shadow:0 -5px 24px #514b2707}.nav-item{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;font-size:10px;color:#979b87;width:72px;position:relative}.nav-item>.icon{width:22px;height:22px}.nav-item.active{color:var(--green);font-weight:650}.nav-item.active i{position:absolute;width:4px;height:4px;background:var(--green);border-radius:50%;bottom:0}.nav-item.active>.icon{stroke-width:2}.storage-notice{background:#f4e4d1;padding:12px;border-radius:10px;font-size:12px;margin:15px 0}
.sheet{border:0;border-radius:24px;padding:35px 27px 25px;width:min(480px,calc(100% - 24px));max-height:85dvh;color:var(--ink);background:var(--paper);box-shadow:0 20px 80px #162b3633;overflow:auto}.sheet::backdrop{background:#22362d65;backdrop-filter:blur(3px)}.sheet-handle{display:none}.sheet-close{position:absolute;right:16px;top:16px;width:34px;height:34px;background:transparent}.sheet-close .icon{width:18px;height:18px}.sheet h2{font:25px/1.5 var(--serif);margin:0 35px 10px 0;letter-spacing:.5px}.sheet h3{font:18px var(--serif);margin:22px 0 9px}.sheet p{font-size:12px;color:var(--muted);line-height:1.9;margin:10px 0 17px}.sheet .eyebrow{font-size:9px;color:var(--orange);margin:5px 0 8px}.sheet .detail-qty{display:inline-block;padding:3px 10px;background:var(--sage);border-radius:20px;font-size:12px;margin-bottom:6px}.sheet-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}.primary-button,.secondary-button,.danger-button{width:100%;border-radius:11px;min-height:46px;padding:11px 14px;font-size:13px;display:flex;align-items:center;justify-content:center;gap:8px}.primary-button{background:var(--green);color:#fffaf0}.primary-button:hover{background:#3b593f}.secondary-button{background:#ebece0;color:var(--ink)}.danger-button{border:1px solid #dccabd;background:transparent;color:#a56343}.sheet form>label{display:block;font-size:12px;margin:16px 0 7px}.sheet input:not([type=checkbox]),.sheet select,.sheet textarea{width:100%;background:#fffef8;border:1px solid #dcdfcf;border-radius:9px;padding:11px 12px;font-size:16px;color:var(--ink);min-height:46px}.sheet textarea{min-height:110px;resize:vertical}.sheet label.checkbox-label{display:flex;align-items:center;gap:8px;margin:18px 0}.checkbox-label input{accent-color:var(--green);width:18px;height:18px}.field-help{font-size:10px!important;margin:6px 0!important}.form-error{color:#a95334!important;min-height:20px}.letter-sheet{padding:10px 0 6px}.letter-sheet>.icon{width:32px;height:32px;color:var(--orange);margin-bottom:14px}.letter-sheet h2{font-size:26px}.letter-sheet .letter-body{font:16px/2.2 var(--serif);color:#56614a;white-space:pre-line;padding:5px 0 15px}.letter-sign{font:14px/2 var(--serif);color:#9c7350;text-align:right;border-top:1px dashed #d5cbb8;padding-top:14px}.privacy-note{padding:13px;background:#eeeee3;border-radius:9px;font-size:11px;line-height:1.9;color:var(--muted)}.share-link{font-size:12px!important;word-break:break-all}.copy-fallback{margin-top:15px}.copy-fallback label{font-size:12px}.toast{position:fixed;bottom:calc(94px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:min(90vw,490px);width:max-content;border:1px solid #dbe0cc;background:#fdfcf3;color:var(--ink);padding:12px 17px;border-radius:13px;box-shadow:0 5px 30px #29362520;font-size:12px;z-index:40;text-align:center}.toast button{color:var(--orange);font-weight:600;margin-left:12px;padding:3px}.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:50}.confetti span{position:absolute;top:35%;left:50%;font-size:18px;animation:confetti-fall 1.7s ease-out forwards;opacity:0}.noscript{padding:20px;text-align:center}.sheet:not([open]),[hidden]{display:none!important}@keyframes confetti-fall{0%{opacity:1;transform:translate(0,0) rotate(0)}25%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r))}}
@media(min-width:760px){#mode-content{max-width:760px;margin:0 auto}.progress-card{max-width:760px;margin:0 auto}.tools-row{gap:24px}.item-note{font-size:11px}.category-heading strong{font-size:15px}.item-title{font-size:14px}.category-header{padding:19px 22px}.item-list{padding:0 23px}.category-tabs{flex-wrap:wrap}.page-footer{padding-bottom:120px}}
@media(max-width:759px){.site-shell{padding:0 22px;max-width:530px}.topbar{height:78px}.brand{font-size:13px;letter-spacing:1.5px}.brand small{font-size:7px;letter-spacing:1.5px}.brand>span:first-child{width:27px}.brand>span:first-child .icon{width:26px}.topbar>.icon-button{width:36px;height:36px}.topbar>.icon-button .icon{width:17px;height:17px}.hero{display:flex;flex-direction:column;gap:22px;align-items:stretch;padding:24px 0 26px}.hero-copy{position:relative}.hero .eyebrow{font-size:8px;letter-spacing:1.6px;margin-bottom:11px}.hero h1{font-size:42px;line-height:1.25;margin-bottom:12px}.hero h1 br{display:none}.hero h1 span:after{height:9px;bottom:1px}.hero-subtitle{font-size:11px;letter-spacing:1.5px;margin-bottom:19px}.destination{font-size:12px;gap:6px}.destination .icon{width:15px;height:15px}.trip-dates{font-size:10px;gap:10px;margin:6px 0 0;letter-spacing:.3px}.letter-hint{position:absolute;right:0;bottom:0;font-size:9px;gap:4px;min-height:32px}.letter-hint .icon{width:14px;height:14px}.letter-hint>span:last-child{display:none}.hero-art{padding:7px 7px 0;transform:rotate(1deg)}.hero-art img{height:auto;aspect-ratio:1.62;object-position:45% 62%;object-fit:cover}.hero-art:before{width:70px;height:22px;top:-10px;left:40%}.art-caption{font-size:6px;letter-spacing:1.1px;padding:3px 7px 4px}.art-caption>span:last-child{font-size:19px}.countdown-stamp{width:66px;height:66px;right:13px;bottom:17px;outline-width:3px}.countdown-stamp strong{font-size:25px}.countdown-stamp>span:first-child{font-size:8px}.countdown-stamp>span:last-child{font-size:8px}.progress-card{border-radius:15px;padding:17px 19px 0}.progress-card h2{font-size:20px}.progress-card .eyebrow{font-size:7px;letter-spacing:1.3px}.progress-card p:not(.eyebrow){font-size:10px}.progress-ring{width:65px;height:65px}.progress-ring strong{font-size:24px}.progress-bottom{padding:10px 0 13px;font-size:9px}.progress-track{margin:0 -19px}.progress-bottom .icon{width:13px;height:13px}#mode-content{padding-top:28px}.section-heading{margin-bottom:16px}.section-heading .eyebrow{font-size:8px}.section-heading h2{font-size:21px}.section-heading>button{font-size:10px}.packing-intro{font-size:10px}.tools-row{gap:10px}.filter-button{font-size:10px}.search-field input{font-size:11px}.category-tab{font-size:10px;padding:7px 13px}.packing-tip{font-size:10px;padding:11px 12px}.category-header{padding:14px 15px;gap:10px;min-height:73px}.category-icon{width:35px;height:35px;border-radius:11px}.category-heading strong{font-size:13px}.category-heading small{font-size:9px}.category-count{font-size:10px}.item-list{padding:0 15px}.item-main{gap:11px}.item-title{font-size:12px}.item-qty{font-size:9px;margin-left:6px}.item-note{font-size:10px}.item-options{min-width:28px;padding-left:2px}.check-decoration{width:22px;height:22px;border-radius:7px}.category-footnote{font-size:10px}.bottom-nav{height:calc(71px + env(safe-area-inset-bottom));padding-top:7px;border-radius:18px 18px 0 0}.nav-item{font-size:9px;gap:3px}.nav-item>.icon{width:21px;height:21px}.sheet{width:100%;margin:auto 0 0;max-width:none;max-height:90dvh;border-radius:24px 24px 0 0;padding:35px 24px calc(25px + env(safe-area-inset-bottom));left:0;right:0}.sheet-handle{display:block;position:absolute;top:10px;left:calc(50% - 17px);height:4px;width:34px;border-radius:4px;background:#d7d9c9}.sheet-close{top:18px;right:18px}.page-footer p{font-size:11px}.page-footer small{font-size:8px}.today-banner{padding:20px}.today-banner h3{font-size:20px}.today-banner>.icon{width:55px;height:55px}.memory-note{font-size:18px}.surprise-card h3{font-size:18px}}
@media(max-width:365px){.site-shell{padding:0 16px}.hero h1{font-size:35px}.letter-hint{font-size:8px}.letter-hint .icon{display:none}.section-heading h2{font-size:19px}.filter-button{font-size:9px}.search-field input{font-size:10px;padding-left:33px}.search-field>span{left:10px}.item-list{padding:0 12px}.item-main{gap:9px}.category-header{padding:13px 12px}.category-heading small{font-size:8px}.item-title{font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.confetti{display:none}}
@media(max-width:759px){.hero h1{font-size:35px;letter-spacing:1px;white-space:nowrap}.hero h1 br{display:none}}@media(max-width:365px){.hero h1{font-size:30px;letter-spacing:.5px}}
.item-note{color:#717966}.optional-tag{color:#795f31}.item-qty{color:#737a65}@media(max-width:759px){.item-title{font-size:14px}.item-note{font-size:11px}.item-qty{font-size:10px}.search-field input{font-size:16px}.search-field input::placeholder{font-size:11px}.item-main{padding:16px 0}}
.together-panel{max-width:760px;margin:0 auto 14px}.together-status{display:flex;align-items:center;justify-content:center;gap:6px;font-size:10px;color:#839079;margin:0 0 10px;min-height:27px}.sync-light{width:5px;height:5px;border-radius:50%;background:#a9ad89}.together-status[data-status=online] .sync-light{background:#668563}.together-status[data-status=offline] .sync-light,.together-status[data-status=error] .sync-light{background:#be794a}.together-status button{font-size:16px;padding:0 8px;min-height:27px}.person-switch{display:flex;gap:10px}.person-button{flex:1;border:1px solid var(--line);background:#fdfbf2;display:flex;align-items:center;gap:10px;text-align:left;padding:11px 15px;border-radius:13px}.person-button.active{border-color:#94a386;background:#edf0e3}.person-avatar{display:flex;align-items:center;justify-content:center;width:33px;height:33px;border-radius:50%;font:15px var(--serif);flex-shrink:0}.person-avatar.her{background:#f1dfd0;color:#9f7357}.person-avatar.him{background:#e0e5d0;color:#778363}.person-button strong{font-size:12px;font-weight:600;display:block}.person-button small{font-size:9px;display:block;color:#8b947e;margin-top:2px}.person-button i{font-style:normal;color:#a6af95;margin-left:auto}.person-button.active i{color:#698558}.person-button:not(.active) i{visibility:hidden}@media(max-width:759px){.together-panel{margin-top:-8px;margin-bottom:12px}.person-button{padding:9px 12px;gap:8px}.person-button strong{font-size:11px}.person-button small{font-size:8px}.person-avatar{width:30px;height:30px;font-size:14px}.together-status{font-size:9px;margin-bottom:7px}}

/* 下滑到清单后吸顶；预留滚动空间，切换页面时不遮住标题。 */
html { scroll-padding-top: calc(72px + env(safe-area-inset-top, 0px)); }
#mode-content { scroll-margin-top: 0; }
.top-nav {
  position: sticky;
  top: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  max-width: 760px;
  margin: 24px auto 0;
  padding: calc(8px + env(safe-area-inset-top, 0px)) 6px 8px;
  background: #f8f5edf5;
  border-bottom: 1px solid var(--line);
  border-radius: 0 0 14px 14px;
  box-shadow: 0 8px 16px -14px #2c44394d;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}
.top-nav-button {
  min-width: 0;
  min-height: 46px;
  padding: 9px 4px;
  border-radius: 10px;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.4;
  font-weight: 500;
  white-space: nowrap;
}
.top-nav-button.active { color: var(--white); background: var(--green); font-weight: 650; }
@media (hover: hover) {
  .top-nav-button:not(.active):hover { color: var(--green); background: var(--sage); }
}

/* 大字版：优先让手机上的物品、说明和操作按钮舒服易读。 */
body { font-size: 16px; }
.brand { font-size: 18px; }
.brand small { font-size: 11px; letter-spacing: 1px; }
.eyebrow, .hero .eyebrow, .section-heading .eyebrow,
.sheet .eyebrow, .surprise-card .eyebrow { font-size: 12px; letter-spacing: 1.2px; }
.hero h1 { font-size: 62px; }
.hero-subtitle { font-size: 17px; letter-spacing: 1px; }
.destination { font-size: 18px; }
.trip-dates { font-size: 14px; flex-wrap: wrap; row-gap: 5px; }
.letter-hint { font-size: 15px; min-height: 44px; gap: 8px; }
.letter-hint .icon { width: 20px; height: 20px; }
.art-caption { font-size: 11px; letter-spacing: .7px; padding: 8px; }
.countdown-stamp { width: 86px; height: 86px; bottom: 28px; }
.countdown-stamp strong { font-size: 34px; }
.countdown-stamp > span:first-child, .countdown-stamp > span:last-child { font-size: 12px; }
.together-status { font-size: 13px; min-height: 36px; }
.together-status button { font-size: 22px; min-height: 36px; }
.person-button { min-width: 0; padding: 13px; }
.person-button > span:nth-child(2) { flex: 1; min-width: 0; }
.person-button strong { font-size: 16px; }
.person-button small { font-size: 12px; color: #717966; }
.person-avatar { font-size: 19px; width: 36px; height: 36px; }
.progress-card .eyebrow { font-size: 11px; letter-spacing: 1px; }
.progress-card h2 { font-size: 27px; line-height: 1.55; }
.progress-card p:not(.eyebrow) { font-size: 15px; line-height: 1.8; }
.progress-main > div:first-child { min-width: 0; flex: 1; }
.progress-ring { width: 82px; height: 82px; }
.progress-ring strong { font-size: 31px; }
.progress-ring small { font-size: 14px; }
.progress-bottom { font-size: 13px; flex-wrap: wrap; gap: 8px 12px; }
.progress-bottom .icon { width: 17px; height: 17px; }
.section-heading h2 { font-size: 29px; line-height: 1.5; letter-spacing: 0; }
.section-heading > button { font-size: 16px; min-height: 48px; }
.section-heading > button .icon { width: 20px; height: 20px; }
.packing-intro, .packing-tip, .category-footnote { font-size: 14px; line-height: 1.85; }
.packing-intro { margin-top: 0; }
.packing-tip > .icon { width: 21px; height: 21px; }
.search-field input { height: 50px; font-size: 16px; padding-left: 42px; }
.search-field input::placeholder { font-size: 14px; }
.search-field > .icon { position: absolute; left: 13px; width: 20px; height: 20px; color: var(--muted); }
.filter-button { font-size: 14px; gap: 7px; min-height: 48px; }
.filter-button .mini-check { width: 18px; height: 18px; }
.category-tab { font-size: 14px; min-height: 44px; padding: 9px 16px; }
.category-header { min-height: 92px; gap: 11px; }
.category-heading strong { font-size: 19px; }
.category-heading small { font-size: 14px; line-height: 1.65; margin-top: 4px; }
.category-count { font-size: 14px; color: #737b68; }
.category-icon { width: 42px; height: 42px; }
.category-icon .icon { width: 24px; height: 24px; }
.item { min-height: 92px; }
.item-main { padding: 19px 0; gap: 13px; }
.item-title { font-size: 18px; line-height: 1.65; overflow-wrap: anywhere; }
.item-qty { font-size: 14px; margin-left: 8px; }
.item-note, .memory-item .item-note { font-size: 14px; line-height: 1.85; margin-top: 5px; }
.check-decoration { width: 28px; height: 28px; border-radius: 9px; }
.check-decoration .icon { width: 19px; height: 19px; }
.item input[type=checkbox] { width: 28px; height: 28px; }
.optional-tag { font-size: 12px; padding: 2px 6px; }
.item-options { min-width: 32px; min-height: 48px; padding-left: 3px; }
.item-options .icon { width: 20px; height: 20px; }
.mode-note { font-size: 16px; }
.mini-progress > span { font-size: 15px; }
.today-banner h3 { font-size: 27px; }
.today-banner p { font-size: 15px; line-height: 1.85; }
.today-banner .eyebrow { font-size: 13px; }
.today-reset { font-size: 15px; min-height: 50px; }
.memory-note { font-size: 24px; line-height: 1.9; }
.surprise-card h3 { font-size: 25px; }
.outline-button { font-size: 16px; min-height: 48px; padding: 11px 18px; }
.passport-stamp { font-size: 15px; max-width: 320px; }
.passport-stamp span { font-size: 13px; }
.bottom-nav { height: calc(88px + env(safe-area-inset-bottom)); padding: 10px 14px calc(12px + env(safe-area-inset-bottom)); }
.nav-item { font-size: 14px; gap: 5px; flex: 1; min-width: 0; }
.nav-item > .icon { width: 25px; height: 25px; }
.page-footer { padding-bottom: 155px; }
.page-footer p { font-size: 16px; line-height: 1.8; }
.page-footer small { font-size: 13px; }
.text-button { font-size: 14px; min-height: 48px; }
.sheet h2, .letter-sheet h2 { font-size: 29px; margin-right: 42px; }
.sheet h3 { font-size: 23px; }
.sheet p { font-size: 16px; }
.sheet .detail-qty { font-size: 15px; }
.sheet form > label, .copy-fallback label { font-size: 16px; }
.sheet .field-help { font-size: 13px !important; }
.sheet .share-link { font-size: 15px !important; }
.sheet input:not([type=checkbox]), .sheet select, .sheet textarea { font-size: 17px; min-height: 50px; }
.sheet-close { width: 42px; height: 42px; }
.primary-button, .secondary-button, .danger-button { font-size: 17px; min-height: 54px; }
.privacy-note { font-size: 15px; }
.letter-sheet .letter-body { font-size: 20px; line-height: 2; }
.letter-sign { font-size: 17px; }
.toast { font-size: 15px; bottom: calc(105px + env(safe-area-inset-bottom)); }
.storage-notice, .empty-state p { font-size: 15px; }
.empty-state h3 { font-size: 22px; }

@media (max-width: 759px) {
  .topbar { min-height: 88px; height: auto; padding: 16px 0; }
  .brand { font-size: 17px; letter-spacing: 1px; gap: 8px; }
  .brand small { font-size: 10px; letter-spacing: .7px; }
  .topbar > .icon-button { width: 42px; height: 42px; }
  .hero h1 { font-size: clamp(38px, 11vw, 48px); line-height: 1.22; white-space: normal; letter-spacing: 1px; }
  .hero h1 br { display: block; }
  .hero h1 span { white-space: nowrap; }
  .hero .eyebrow { font-size: 11px; letter-spacing: .8px; }
  .hero-subtitle { font-size: 16px; }
  .letter-hint { position: static; margin-top: 9px; font-size: 14px; }
  .letter-hint .icon { display: inline; }
  .countdown-stamp { width: 78px; height: 78px; }
  .countdown-stamp strong { font-size: 31px; }
  .person-button { padding: 12px 10px; gap: 8px; }
  .person-button i { display: none; }
  .person-avatar { width: 32px; height: 32px; font-size: 18px; }
  .progress-card { padding-top: 20px; }
  .progress-card h2 { font-size: 24px; letter-spacing: 0; }
  .progress-card p:not(.eyebrow) { font-size: 14px; }
  .progress-card .eyebrow { font-size: 10px; }
  .progress-ring { width: 74px; height: 74px; }
  .progress-bottom { padding-top: 15px; padding-bottom: 17px; }
  .section-heading { gap: 8px; }
  .section-heading h2 { font-size: 24px; }
  .section-heading > button { font-size: 15px; }
  .section-heading > button .icon { width: 18px; height: 18px; }
  .category-heading strong { font-size: 18px; }
  .category-heading small { font-size: 13px; }
  .category-icon { width: 38px; height: 38px; }
  .category-header { padding: 17px 14px; }
  .today-banner p { max-width: 100%; }
  .today-banner > .icon { opacity: .3; right: 12px; }
  .today-banner h3, .today-banner p { position: relative; }
  .surprise-card { padding: 25px 18px; }
  .surprise-card h3 { font-size: 23px; }
  .memory-note { font-size: 23px; }
  .sheet { padding-left: 22px; padding-right: 22px; }
  .page-footer p { font-size: 15px; }
}
@media (max-width: 365px) {
  .brand { font-size: 16px; }
  .brand small { font-size: 9px; }
  .hero h1 { font-size: 38px; }
  .tools-row { flex-wrap: wrap; gap: 4px; }
  .search-field { flex-basis: 100%; }
  .filter-button { margin-left: auto; }
  .section-heading { flex-wrap: wrap; }
  .section-heading > button { margin-left: auto; }
  .person-button { padding: 11px 8px; gap: 6px; }
  .person-button strong { font-size: 15px; }
  .person-avatar { width: 28px; height: 28px; font-size: 17px; }
  .category-header { gap: 8px; padding-left: 12px; padding-right: 12px; }
  .category-heading small { font-size: 13px; }
  .category-count { font-size: 13px; }
  .item-main { gap: 10px; }
  .item-options { min-width: 28px; }
}
