:root{color:#171b19;font-synthesis:none;--primary:#0b9a6a;--primary-dark:#087a55;--bg:#f6f8f6;--surface:#fff;--muted:#69716d;--border:#14281e14;--safe-bottom:env(safe-area-inset-bottom,0px);background:#e9eeeb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}body{scrollbar-width:none;min-width:320px;min-height:100vh;margin:0}body::-webkit-scrollbar{display:none}button,input{font:inherit}button{cursor:pointer}.app-shell,.login-page,.center-screen{background:var(--bg);width:min(100%,520px);min-height:100dvh;margin:0 auto}.route-stage{min-height:100dvh;padding-bottom:calc(88px + var(--safe-bottom))}.page{padding:max(24px, env(safe-area-inset-top)) 22px 34px}.center-screen{color:var(--muted);place-content:center;justify-items:center;gap:12px;display:grid}.brand-mark{color:#fff;background:var(--primary);border-radius:16px;place-items:center;width:48px;height:48px;display:grid;box-shadow:0 14px 32px #0b9a6a33}.brand-mark.large{border-radius:22px;width:64px;height:64px}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{padding:max(58px, env(safe-area-inset-top)) 28px 30px;flex-direction:column;display:flex}.login-hero{flex:1;padding-top:9vh}.login-hero h1{letter-spacing:-.04em;margin:24px 0 8px;font-size:34px}.login-hero>p:last-child{color:var(--muted);font-size:17px}.eyebrow{color:var(--primary-dark);letter-spacing:.16em;margin:18px 0 7px;font-size:11px;font-weight:800}.login-form{gap:16px;display:grid}.login-form label{gap:8px;font-size:13px;font-weight:700;display:grid}input{border:1px solid var(--border);background:#fff;border-radius:16px;outline:none;min-height:52px;padding:0 16px}input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0b9a6a1a}.primary-button,.secondary-button,.ghost-button{border:0;border-radius:16px;justify-content:center;align-items:center;gap:9px;min-height:48px;font-weight:750;display:inline-flex}.primary-button{background:var(--primary);color:#fff;width:100%}.primary-button:disabled{opacity:.55;cursor:not-allowed}.secondary-button{color:var(--primary-dark);background:#0b9a6a1a;padding:0 18px}.ghost-button{color:var(--primary-dark);border:1px solid var(--border);background:#fff;padding:0 16px}.form-error,.upload-message{color:#b24a3a;background:#fff0ed;border-radius:12px;margin:0;padding:11px 13px;font-size:13px}.privacy-note{text-align:center;color:#929995;margin:24px 0 0;font-size:12px}.home-header,.page-header,.section-heading,.sheet-title{justify-content:space-between;align-items:center;display:flex}.home-header{padding:4px 0 14px}.home-identity{align-items:center;gap:12px;display:flex}.home-header p{color:var(--muted);margin:4px 0 0;font-size:12px}.home-header h1{letter-spacing:-.02em;margin:0;font-size:18px;line-height:1.2}.header-actions{gap:2px;display:flex}.header-actions button{color:#33433d;background:0 0;border:0;place-items:center;width:40px;height:40px;display:grid}.header-actions svg{width:19px}.avatar{width:48px;height:48px;color:var(--primary-dark);background:#dff2ea;border-radius:50%;place-items:center;font-weight:800;display:grid}.stat-board{border:1px solid var(--border);background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 4px 18px #17281f0a}.stat-primary{grid-template-columns:repeat(4,1fr);padding:14px 2px 12px;display:grid}.stat-primary div{text-align:center;border-right:1px solid var(--border)}.stat-primary div:last-child{border:0}.stat-primary strong,.stat-primary span{display:block}.stat-primary strong{font-size:21px}.stat-primary span{color:var(--muted);margin-top:3px;font-size:10px}.stat-secondary{border-top:1px solid var(--border);grid-template-columns:92px 92px 1fr;align-items:center;min-height:54px;padding:0 14px;display:grid}.stat-secondary div{align-items:baseline;gap:5px;display:flex}.stat-secondary strong{font-size:18px}.stat-secondary span,.stat-secondary small{color:var(--muted);font-size:10px}.stat-secondary small{text-align:right}.sichuan-panel{color:#fff;border-radius:16px;height:244px;margin-top:14px;position:relative;overflow:hidden}.sichuan-panel img{object-fit:cover;width:100%;height:100%;position:absolute}.hero-shade{background:#0322283d;position:absolute;inset:0}.hero-copy{justify-content:space-between;align-items:flex-start;padding:18px;display:flex;position:absolute;inset:0}.hero-copy p{text-shadow:0 1px 8px #0000004d;margin:0 0 5px;font-size:21px;font-weight:850}.hero-copy span{opacity:.9;font-size:12px}.hero-copy b{color:var(--primary-dark);background:#eefff7e0;border-radius:9px;padding:7px 9px;font-size:11px}.progress-section{border:1px solid var(--border);background:#fff;border-radius:16px;margin-top:14px;padding:20px 17px}.progress-section h2{margin:0 0 12px;font-size:15px}.progress-row{grid-template-columns:28px 62px 1fr 22px;align-items:center;gap:8px;min-height:54px;display:grid}.progress-icon{width:26px;height:26px;color:var(--primary-dark);background:#ddf3e9;border-radius:50%;place-items:center;display:grid}.tone-1{color:#3874b5;background:#e7f0fa}.tone-2{color:#b77714;background:#fff0d9}.progress-row strong{font-size:12px}.progress-line{background:#ecf0ee;border-radius:4px;height:4px;overflow:hidden}.progress-line i{background:var(--primary);width:0;height:100%;display:block}.progress-row small{color:var(--muted);text-align:right}.section-heading h2{margin:0;font-size:20px}.section-heading .eyebrow{margin-top:0}.empty-map{text-align:center;place-content:center;justify-items:center;gap:7px;min-height:190px;display:grid}.empty-map svg{color:var(--primary)}.empty-map span{color:#5d746b;font-size:13px}.section-block{margin-top:30px}.empty-state{text-align:center;place-content:center;justify-items:center;min-height:300px;padding:32px 22px;display:grid}.empty-icon{width:58px;height:58px;color:var(--primary);background:#e7f2ec;border-radius:20px;place-items:center;margin-bottom:14px;display:grid}.empty-state>strong{font-size:18px}.empty-state p{color:var(--muted);max-width:290px;margin:8px 0 18px;line-height:1.7}.page-state{min-height:70dvh;color:var(--muted);place-content:center;justify-items:center;gap:12px;display:grid}.page-header h1{margin:0 0 5px;font-size:32px}.page-header span{color:var(--muted)}.page-header .eyebrow{margin-top:0}.icon-button{border:1px solid var(--border);color:#33433d;background:#ffffffeb;border-radius:16px;place-items:center;width:46px;height:46px;display:grid}.segmented{background:#e9eeeb;border-radius:14px;grid-template-columns:1fr 1fr;margin:22px 0 14px;padding:4px;display:grid}.segmented button{min-height:40px;color:var(--muted);background:0 0;border:0;border-radius:11px}.segmented button.active{color:var(--primary-dark);background:#fff;font-weight:800}.map-page{padding-bottom:0}.map-canvas{background:#e8eee9;border-radius:22px;height:58dvh;min-height:420px;position:relative;overflow:hidden}.map-message{text-align:center;color:var(--primary-dark);place-content:center;justify-items:center;gap:8px;padding:28px;display:grid;position:absolute;inset:0}.map-message span{color:var(--muted);max-width:270px;font-size:13px;line-height:1.6}.map-sheet{background:#fff;border-radius:28px 28px 18px 18px;gap:7px;min-height:128px;margin:-42px 12px 0;padding:30px 22px 20px;display:grid;position:relative;box-shadow:0 -6px 30px #1e372b12}.map-sheet span{color:var(--muted);font-size:13px}.sheet-handle{background:#dce2df;border-radius:3px;width:38px;height:4px;position:absolute;top:10px;left:50%;transform:translate(-50%)}.photo-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:24px;display:grid}.photo-card{border:1px solid var(--border);background:#fff;border-radius:16px;margin:0;overflow:hidden}.photo-card img,.photo-placeholder{aspect-ratio:1;object-fit:cover;width:100%}.photo-placeholder{color:var(--muted);background:#e9eeeb;place-items:center;display:grid}.photo-card figcaption{text-overflow:ellipsis;white-space:nowrap;padding:10px;font-size:12px;overflow:hidden}.photo-card figcaption span{color:var(--muted);margin-top:3px;display:block}.profile-header{text-align:center;padding:32px 0}.large-avatar{width:76px;height:76px;margin:auto;font-size:24px}.profile-header h1{margin:14px 0 4px}.profile-header p,.archive-card p{color:var(--muted)}.archive-card{background:#e8f3ed;border-radius:22px;padding:22px}.archive-card h2{margin:6px 0}.menu-row{border:0;border-bottom:1px solid var(--border);text-align:left;background:0 0;grid-template-columns:30px 1fr auto;align-items:center;width:100%;min-height:58px;margin-top:18px;display:grid}.bottom-nav{z-index:20;width:min(100%,520px);height:calc(72px + var(--safe-bottom));padding:8px 14px var(--safe-bottom);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff0;grid-template-columns:repeat(5,1fr);align-items:center;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav a{color:#7c8580;place-content:center;justify-items:center;gap:3px;min-height:52px;font-size:10px;text-decoration:none;display:grid}.bottom-nav a svg{width:22px}.bottom-nav a.active{color:var(--primary-dark);font-weight:800}.nav-plus{border:5px solid var(--bg);background:var(--primary);color:#fff;border-radius:18px;justify-self:center;place-items:center;width:54px;height:54px;display:grid;transform:translateY(-14px)}.sheet-backdrop{z-index:30;background:#101c175c;border:0;width:100%;position:fixed;inset:0}.action-sheet{z-index:31;width:min(100%,520px);padding:22px 22px calc(24px + var(--safe-bottom));background:#fff;border-radius:28px 28px 0 0;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.sheet-title h2{margin:0}.sheet-title .eyebrow{margin-top:0}.sheet-copy{color:var(--muted);font-size:14px;line-height:1.6}.file-picker{min-height:150px;color:var(--primary-dark);background:#f3faf6;border:1px dashed #0b9a6a66;border-radius:18px;place-content:center;justify-items:center;gap:7px;margin:18px 0;display:grid;position:relative}.file-picker span{color:var(--muted);font-size:11px}.file-picker input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}@media (width>=700px){body{padding:24px 0}.app-shell,.login-page,.center-screen{border-radius:28px;min-height:calc(100dvh - 48px);overflow:hidden;box-shadow:0 20px 70px #17281f1f}.bottom-nav{border-radius:0 0 28px 28px;bottom:24px}}
