:root{--green:#0b6b4f;--green-dark:#084e3a;--cream:#f7f5ef;--ink:#1b2b26;--muted:#6b7a73;--line:#e3e0d5;--card:#fff;--danger:#b23b3b}*,:before,:after{box-sizing:border-box}html,body{max-width:100%;margin:0;padding:0}body{background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,Source Han Sans SC,WenQuanYi Micro Hei,sans-serif;line-height:1.55;overflow-x:hidden}a{color:var(--green)}h1,h2,h3,p,dl,dd{margin-top:0}:focus-visible{outline:2px solid var(--green);outline-offset:2px}.app-shell{background:var(--cream);width:100%;max-width:720px;min-height:100vh;margin:0 auto}.app-main{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px))}@media (min-width:760px){body{background:#eceae1}.app-shell{box-shadow:0 0 40px #1b2b2614}}.topbar{z-index:30;background:var(--green);color:#fff;justify-content:space-between;align-items:center;gap:12px;height:52px;padding:0 16px;display:flex;position:sticky;top:0}.topbar-brand{color:#fff;letter-spacing:.5px;white-space:nowrap;font-size:16px;font-weight:700;text-decoration:none}.topbar-user{opacity:.85;text-overflow:ellipsis;white-space:nowrap;max-width:45%;font-size:12px;overflow:hidden}.tabbar{z-index:40;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #1b2b260f}@media (min-width:760px){.tabbar{border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:14px 14px 0 0;width:100%;max-width:720px;left:50%;right:auto;transform:translate(-50%)}}.tab-item{min-width:0;min-height:56px;color:var(--muted);white-space:nowrap;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;padding:6px 2px;font-size:13px;font-weight:600;text-decoration:none;display:flex}.tab-item:before{content:"";background:var(--line);border-radius:50%;width:6px;height:6px}.tab-item:hover{color:var(--green)}.page{padding:16px 16px 8px}.page-title{color:var(--ink);margin:0 0 4px;font-size:20px}.page-sub{color:var(--muted);margin:0 0 16px;font-size:13px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;margin-bottom:12px;padding:16px;box-shadow:0 2px 10px #1b2b260a}.card-title{color:var(--ink);margin:0 0 12px;font-size:15px;font-weight:700}.muted{color:var(--muted);font-size:13px}.hint{color:var(--muted);margin:0 0 10px;font-size:12px;line-height:1.6}.stack>:last-child{margin-bottom:0}.divider{background:var(--line);height:1px;margin:18px 0}.section-title{color:var(--green);border-left:3px solid var(--green);margin:0 0 10px;padding-left:8px;font-size:14px;font-weight:700}.empty{color:var(--muted);text-align:center;padding:14px 0;font-size:13px}.btn{cursor:pointer;text-align:center;box-sizing:border-box;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:6px;max-width:100%;min-height:44px;padding:10px 16px;font-family:inherit;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--green);color:#fff}.btn-primary:hover{background:var(--green-dark)}.btn-ghost{color:var(--green);border-color:var(--line);background:#fff}.btn-danger{color:var(--danger);border-color:var(--line);background:#fff}.btn-block{width:100%}.btn-sm{padding:8px 12px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}.field{flex-direction:column;gap:6px;min-width:0;margin-bottom:14px;display:flex}.field label{color:var(--ink);font-size:13px;font-weight:600}input[type=text],input[type=password],input[type=date],input[type=search],input[type=file],select,textarea{width:100%;max-width:100%;min-height:44px;color:var(--ink);border:1px solid var(--line);box-sizing:border-box;background:#fff;border-radius:10px;padding:10px 12px;font-family:inherit;font-size:16px}textarea{resize:vertical;min-height:88px;line-height:1.6}input:focus,select:focus,textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px #0b6b4f1f}.form-error{color:var(--danger);margin:0 0 12px;font-size:13px}.form-ok{color:var(--green);margin:0 0 12px;font-size:13px}.filter-form{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}.filter-form .field{margin-bottom:12px}.filter-actions{flex-wrap:wrap;grid-column:1/-1;gap:10px;display:flex}@media (max-width:420px){.filter-form{grid-template-columns:1fr}}.badge{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;padding:5px 8px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.badge-row{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.badge-status-done{color:var(--green);background:#0b6b4f1f}.badge-status-pending{color:var(--muted);background:#1b2b2612}.badge-status-paused{color:#95610a;background:#c4841424}.badge-access-a{color:var(--danger);background:#b23b3b1f}.badge-access-b{color:#9a5408;background:#c86e1424}.badge-access-c{color:#7a6300;background:#c4a01429}.badge-access-d{color:var(--green);background:#0b6b4f1f}.badge-access-unknown{color:var(--muted);background:#1b2b2612}.badge-soft{color:var(--green);background:#0b6b4f1a}.badge-scenic{color:#5b3a8c;background:#5a3c8c1f}.stat-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px;display:grid}.stat{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:14px;padding:14px 10px}.stat-num{color:var(--ink);font-size:26px;font-weight:800;line-height:1.1}.stat-label{color:var(--muted);margin-top:4px;font-size:12px}.stat.is-done .stat-num{color:var(--green)}.stat.is-paused .stat-num{color:#95610a}.progress-head{color:var(--muted);justify-content:space-between;margin-bottom:8px;font-size:12px;display:flex}.progress{background:#0b6b4f1a;border-radius:999px;height:12px;overflow:hidden}.progress-fill{background:var(--green);border-radius:999px;height:100%}.outlet-card{color:inherit;padding:14px 16px;text-decoration:none;display:block}.outlet-card:hover{border-color:var(--green)}.outlet-card-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.outlet-name{color:var(--ink);overflow-wrap:anywhere;min-width:0;font-size:16px;font-weight:700}.outlet-suffix{color:var(--muted);margin-left:6px;font-size:12px;font-weight:400}.outlet-meta{color:var(--green);overflow-wrap:anywhere;margin-top:6px;font-size:12px}.outlet-addr{color:var(--ink);overflow-wrap:anywhere;margin-top:6px;font-size:13px}.outlet-foot{border-top:1px dashed var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding-top:10px;font-size:12px;display:flex}.pagination{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:8px 0 20px;font-size:13px;display:flex}.pagination .btn{min-width:96px}.kv{grid-template-columns:96px 1fr;gap:0;margin:0;display:grid}.kv dt{color:var(--muted);border-bottom:1px dashed var(--line);padding:9px 0;font-size:12px}.kv dd{color:var(--ink);border-bottom:1px dashed var(--line);overflow-wrap:anywhere;min-width:0;margin:0;padding:9px 0 9px 8px;font-size:13px}.visit-item{border:1px solid var(--line);background:#fff;border-radius:10px;margin-bottom:10px;padding:12px}.visit-date{color:var(--ink);font-size:14px;font-weight:700}.visit-note{color:var(--ink);overflow-wrap:anywhere;margin-top:6px;font-size:13px}.image-item{color:var(--ink);border-bottom:1px dashed var(--line);overflow-wrap:anywhere;padding:10px 0;font-size:12px}.image-item code{color:var(--muted);word-break:break-all;font-size:11px}.segment{gap:8px;margin-bottom:14px;display:flex}.segment button{border:1px solid var(--line);min-width:0;min-height:44px;color:var(--ink);cursor:pointer;background:#fff;border-radius:10px;flex:1 1 0;font-family:inherit;font-size:14px;font-weight:600}.segment button.is-active{background:var(--green);color:#fff;border-color:var(--green)}.actions-row{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.promo{background:linear-gradient(160deg,#f7f5ef 0%,#eef2ea 100%);justify-content:center;align-items:center;min-height:100dvh;padding:28px 16px;display:flex;position:relative}.promo-corner{align-items:center;gap:12px;display:flex;position:absolute;top:14px;right:16px}.promo-small{color:var(--muted);border-bottom:1px dashed var(--line);padding-bottom:2px;font-size:12px;text-decoration:none}.promo-card{background:var(--card);border:1px solid var(--line);text-align:center;border-radius:20px;width:100%;max-width:420px;padding:32px 24px;box-shadow:0 12px 40px #0b6b4f1a}.promo-kicker{letter-spacing:1.5px;color:var(--green);background:#0b6b4f14;border-radius:999px;padding:4px 10px;font-size:12px;display:inline-block}.promo-title{color:var(--ink);letter-spacing:2px;margin:16px 0 12px;font-size:30px}.promo-lead{color:var(--ink);margin:0 0 8px;font-size:16px;line-height:1.7}.promo-sub{color:var(--muted);margin:0 0 24px;font-size:13px;line-height:1.7}.promo-cta{font-size:16px}.promo-foot{color:var(--muted);margin:18px 0 0;font-size:11px;line-height:1.6}.login-page{background:linear-gradient(160deg,#f7f5ef 0%,#eef2ea 100%);justify-content:center;align-items:center;min-height:100dvh;padding:24px 16px;display:flex}.login-card{width:100%;max-width:380px}.login-brand{letter-spacing:1.5px;color:var(--green);font-size:12px}.login-title{margin:6px 0 4px;font-size:22px}.login-back{color:var(--muted);margin-top:18px;font-size:13px;text-decoration:none;display:inline-block}
