:root{--paper:#f7f5ee;--ink:#49382f;--muted:#796e61;--accent:#986529;--soft:#f0ede5;--white:#fffefa;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei',sans-serif;color:var(--ink);background:var(--paper);color-scheme:light}*{box-sizing:border-box}body{margin:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.035' filter='url(%23n)'/%3E%3C/svg%3E")}button,input,select,textarea{font:inherit}button,a,input,select{touch-action:manipulation}button{color:inherit;border:0;cursor:pointer;background:transparent;min-height:44px}button:hover{background-color:#e9e2d5}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #846224;outline-offset:3px}svg{width:24px;height:24px;vertical-align:middle}h1,h2,h3,.brand,.subtitle,.week,.month-bar,.stamp,.machine,.polaroid small{font-family:Georgia,'Courier New','Microsoft YaHei',serif}h1{font-size:32px;margin:6px 0;letter-spacing:1px}h2{font-size:16px;margin:0}h3{font-size:18px}p{line-height:1.65}small{display:block;font-size:12px;color:var(--muted);line-height:1.65}img{max-width:100%;object-fit:cover}.shell{max-width:540px;margin:auto;padding:calc(20px + env(safe-area-inset-top)) 20px calc(100px + env(safe-area-inset-bottom))}.top{display:flex;align-items:flex-start;justify-content:space-between;text-align:center;margin-bottom:22px}.brand{font:10px 'Courier New',monospace;letter-spacing:3px;margin:0;color:var(--muted)}.subtitle{font-size:12px;color:var(--muted);margin:0}.round{width:44px;height:44px;display:inline-grid;place-items:center;border:1.5px solid white;border-radius:50%;background:#ffffff45;flex-shrink:0}.card{background:var(--white);border:1px solid #fff;border-radius:25px;padding:22px;margin:16px 0;box-shadow:0 5px 20px #46342104}.month-bar{display:flex;align-items:center;justify-content:center;gap:18px;font-size:14px}.month-bar input{border:0;background:none;color:var(--ink);min-height:44px;max-width:170px}.calendar{padding:22px 16px}.week,.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.week{text-align:center;font-size:11px;color:var(--muted);margin-bottom:16px}.date{position:relative;aspect-ratio:.88;background:#f2f0ea;border-radius:15px;padding:0;font-family:'Courier New',monospace;font-size:12px;min-height:44px;overflow:visible}.date.selected{background:var(--accent);color:white}.date img{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);border-radius:12px}.date img+span{position:absolute;bottom:2px;left:3px;background:#ffffffdd;color:var(--ink);padding:1px 3px;border-radius:4px;font-size:9px}.date b{position:absolute;right:-3px;top:-4px;background:#92642e;color:white;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;font-size:10px}.summary{display:flex;align-items:center;justify-content:space-between;font-size:13px;padding:12px 18px}.summary b{color:var(--accent);font-size:19px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.section-title p{font-size:12px}.empty{text-align:center;padding:28px 8px;color:var(--muted);font-size:13px}.empty-icon{display:grid;place-items:center;margin:auto;width:60px;height:60px;border:1px dashed #c5b593;border-radius:50%;color:var(--accent);transform:rotate(-8deg)}.empty-icon svg{width:30px;height:30px}.text-button{font-size:12px;color:var(--accent);padding:6px 10px}.visit-row{display:flex;align-items:center;gap:10px;border-top:1px solid #f0ece4;padding:10px 0;font-size:12px}.row-button{display:flex;gap:12px;align-items:center;text-align:left;flex:1;min-width:0;padding:6px 0}.row-button strong{display:block;font-size:14px;overflow-wrap:anywhere}.thumb{width:56px;height:56px;border-radius:10px}.bottom{position:fixed;z-index:5;bottom:calc(18px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:16px;align-items:center;width:calc(100% - 48px);max-width:410px}.bottom nav{flex:1;display:flex;border:2px solid white;background:#f0ede5f2;border-radius:40px;padding:5px;box-shadow:0 5px 20px #513c1e0b;backdrop-filter:blur(12px)}.bottom nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:30px;min-height:51px;font-size:10px}.bottom nav [aria-current]{background:#e1dbd0;color:#89591e}.add{width:61px;height:61px;border:2px solid white;background:#f6f2e9;color:var(--accent)}.add svg{width:32px;height:32px}.footnote{text-align:center;color:var(--muted);font:italic 12px Georgia;margin:28px 0}.muted{font-size:13px;color:var(--muted)}dialog{width:calc(100% - 24px);max-width:500px;max-height:90dvh;overflow:auto;border:1px solid white;border-radius:26px;padding:24px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#30281f66;backdrop-filter:blur(3px)}dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}dialog header h2{font-size:23px}dialog header button{font-size:30px;width:44px}label{display:block;font-size:13px;margin:12px 0}input,select,textarea{width:100%;padding:12px;border:1px solid #d4cbbc;border-radius:12px;background:white;color:var(--ink);min-height:44px;margin-top:6px}textarea{resize:vertical;min-height:80px}.check{display:flex;gap:10px;align-items:center;min-height:44px}.check input{width:20px;min-height:20px;height:20px;margin:0}.primary{width:100%;background:var(--accent);color:white;border-radius:15px;margin-top:18px;padding:13px}.primary:hover{background:#785024}.error{color:#a13827;font-size:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}#notice{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#453b2f;color:white;border-radius:12px;padding:8px 14px;max-width:90%;z-index:10;font-size:13px;pointer-events:none}#notice:empty{display:none}.stamp-grid,.polaroids,.milestones{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:25px 0}.stamp{aspect-ratio:1;border:2px solid currentColor;border-radius:50%;padding:16px 8px;display:flex;flex-direction:column;align-items:center;justify-content:space-around;font-size:11px;transform:rotate(-5deg);color:#946628;outline:1px dashed currentColor;outline-offset:-5px}.stamp strong{font-size:13px;overflow-wrap:anywhere}.stamp small{color:inherit}.stamp img{height:55px;width:70px;object-fit:contain}.ink-1{color:#626f38;transform:rotate(4deg)}.ink-2{color:#354f70}.polaroid{padding:12px 12px 18px;text-align:left;background:#ded0ac;box-shadow:1px 4px 8px #453c2422;border-radius:3px}.polaroid img{aspect-ratio:1;width:100%;margin-bottom:12px}.polaroid strong{font-size:13px}.paper-1{background:#f5f0e0}.paper-2{background:#c2c39c}.milestones .card{text-align:center;margin:0;padding:20px 10px}.milestones svg{width:48px;height:48px;color:var(--accent);margin-bottom:15px}.milestones p{font-size:12px}.locked{opacity:.65}.passport h2{font-size:22px;margin:4px 0 24px}.stats{display:flex;justify-content:space-between;margin:25px 0;font-size:12px}.stats b{display:block;font-size:25px;margin-bottom:5px}.machine{font-size:11px;color:var(--muted);overflow-wrap:anywhere}.menu button{display:block;width:100%;text-align:left;border-bottom:1px solid #eee8de;padding:14px}.fav-strip{display:flex;gap:12px;overflow-x:auto}.fav-strip article{flex:0 0 125px;font-size:12px}.fav-strip img{width:125px;height:90px;border-radius:10px}.fav-strip strong{display:block}@media(max-width:380px){.shell{padding-left:14px;padding-right:14px}.calendar{padding:18px 10px}.days,.week{gap:4px}.date{border-radius:12px}.card{padding:18px}.calendar{padding:18px 10px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

.crop-preview{width:180px;height:180px;border:1px dashed #c5b593;overflow:hidden;border-radius:12px;margin:16px auto;background:#eee8dd}.crop-preview img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}.cover-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.cover-options img{width:100%;height:120px;border-radius:12px}.photo-strip{display:flex;gap:10px;flex-wrap:wrap}.dish{border:1px solid #d4cbbc;border-radius:16px;margin:18px 0;padding:16px}summary{cursor:pointer;min-height:44px;padding:12px 0;font-size:14px}.danger{color:#963c2a;width:100%;margin-top:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;max-height:200px;overflow:auto}.map-pending{text-align:center;border:1px dashed #c6b995;background:#ede9df88}.map-pending svg{width:44px;height:44px;color:#986529;margin-bottom:12px}.map-pending p{font-size:13px;color:#796e61}.navigation-link{display:block;padding:12px;color:var(--accent);min-height:44px}.skip{position:fixed;left:12px;top:-100px;background:white;z-index:100;padding:12px;color:var(--ink)}.skip:focus{top:12px}dialog{overscroll-behavior:contain}button,input,select,summary,a{scroll-margin-bottom:120px}fieldset{min-width:0}h1,h2,strong{overflow-wrap:anywhere}h1:focus{outline:none}input,select,textarea{font-size:16px}.milestones .card,.polaroid{content-visibility:auto;contain-intrinsic-size:160px 240px}.stamp img{width:70px;height:55px}.thumb{flex-shrink:0}.error:empty{display:none}

h1,h2,h3,.brand,.subtitle,.week,.month-bar,.stamp,.machine,.polaroid small{font-family:'Courier New','Microsoft YaHei',monospace}.passport{position:relative}.passport h2{max-width:68%}.issued{position:absolute;right:20px;top:25px;width:80px;height:80px;border:2px solid var(--accent);outline:1px dashed var(--accent);outline-offset:-5px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;transform:rotate(10deg);font:9px 'Courier New',monospace;color:var(--accent)}.issued span{font-size:10px}.milestones .card svg{stroke-width:1.2}.fav-strip article:has(>img){min-height:140px}.fav-strip article:not(:has(>img))::before{content:'尚无照片';display:grid;place-items:center;width:125px;height:90px;background:var(--soft);border-radius:10px;color:var(--muted);margin-bottom:5px}.polaroid img{height:auto}.top h1{font-weight:700}button:focus-visible{scroll-margin-bottom:125px}@media(max-width:380px){.calendar{padding:18px 6px}}
