:root{--app-brand:#2b6a67;--app-brand-ink:#1f4f4c;--app-accent:#e8663d;--app-ink:#1c2530;--app-muted:#6b7684;--app-bg:#f4f6f7;--app-panel:#fff;--app-border:#e6eaed;--app-radius:.875rem;--app-shadow:0 1px 3px #1428280f, 0 8px 24px #1428280d}*{box-sizing:border-box}html,body,#app{height:100%}body{color:var(--app-ink);background:var(--app-bg);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}a{color:inherit;text-decoration:none}button{font-family:inherit}.app-shell{background:var(--app-bg);flex-direction:column;max-width:30rem;min-height:100%;margin:0 auto;display:flex}.app-bar{z-index:10;background:var(--app-brand);color:#fff;align-items:center;gap:.5rem;padding:.875rem 1rem;display:flex;position:sticky;top:0}.app-bar .brand{letter-spacing:.02em;font-size:1.0625rem;font-weight:600}.app-bar .sub{opacity:.85;margin-left:auto;font-size:.75rem}.app-bar .back{color:#fff;cursor:pointer;background:0 0;border:none;padding:0 .25rem 0 0;font-size:1.25rem}.app-body{flex-direction:column;flex:1;gap:1rem;padding:1rem;display:flex}.card{background:var(--app-panel);border:1px solid var(--app-border);border-radius:var(--app-radius);box-shadow:var(--app-shadow);padding:1rem}.btn{border:1px solid var(--app-border);background:var(--app-panel);color:var(--app-ink);cursor:pointer;border-radius:.75rem;justify-content:center;align-items:center;gap:.375rem;padding:.75rem 1rem;font-size:.9375rem;transition:filter .15s,box-shadow .15s;display:inline-flex}.btn:active{filter:brightness(.97)}.btn.primary{background:var(--app-brand);border-color:var(--app-brand);color:#fff}.btn.block{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed}.field{flex-direction:column;gap:.375rem;margin-bottom:.875rem;display:flex}.field label{color:var(--app-muted);font-size:.8125rem}.field input,.field select,.field textarea{border:1px solid var(--app-border);font:inherit;color:var(--app-ink);background:#fff;border-radius:.625rem;padding:.625rem .75rem}.field textarea{resize:vertical}.req:after{content:" *";color:var(--app-accent)}.muted{color:var(--app-muted)}.error{color:#c0392b;font-size:.8125rem}.badge{color:var(--app-brand-ink);background:#2b6a671f;border-radius:.5rem;padding:.125rem .5rem;font-size:.75rem;display:inline-block}
