:root{--ink: #2b2a33;--ink-soft: #6f6d7a;--paper: #faf9f6;--card: #ffffff;--line: #e6e4dd;--accent: #c2571f;--accent-soft: #f3e2d3;--locked: #b9b6ad;--done: #3f7d4e;--radius: 14px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:PingFang SC,Microsoft YaHei,Noto Sans SC,sans-serif;-webkit-font-smoothing:antialiased}.app-shell{max-width:560px;margin:0 auto;min-height:100vh;padding:16px 16px 72px}.page-title{font-size:22px;font-weight:700;margin:8px 0 4px}.page-sub{color:var(--ink-soft);font-size:13px;margin:0 0 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px}.btn{display:inline-block;border:none;border-radius:999px;padding:10px 18px;font-size:15px;background:var(--accent);color:#fff;cursor:pointer}.btn:disabled{background:var(--locked);cursor:not-allowed}.btn-ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}.nav-tabs{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:560px;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:10}.nav-tabs a{flex:1;text-align:center;padding:10px 0;font-size:13px;color:var(--ink-soft);text-decoration:none}.nav-tabs a.active{color:var(--accent);font-weight:600}.back-row{margin:0 0 4px}.back-link{font-size:13px;color:var(--ink-soft);text-decoration:none}.back-link:hover{color:var(--accent)}.view-holder{position:relative}.page-enter-active{transition:opacity .14s ease-out,transform .14s ease-out}.page-leave-active{position:absolute;top:0;left:0;width:100%;transition:opacity .1s ease-in}.page-enter-from{opacity:0;transform:translateY(4px)}.page-leave-to{opacity:0}@media(prefers-reduced-motion:reduce){.page-enter-active,.page-leave-active{transition:none}}@media(min-width:768px){.app-shell,.nav-tabs{max-width:744px}}@media(min-width:1024px){.app-shell,.nav-tabs{max-width:960px}}.cols-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:14px;align-items:start}.cols-2>.card{margin-bottom:0}.unit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:14px}.unit-grid .unit-card{margin-bottom:0}@media(pointer:coarse){.btn,.btn-ghost{padding:12px 22px;min-height:44px}.nav-tabs a{padding:12px 0;min-height:44px}.name-input{min-height:44px}}
