:root{--bg:#130b20;--surface:#1d1430;--raised:#271a3d;--input:#170f28;--ink:#f2ecfa;--muted:#a494bd;--line:#32264a;--field-line:#463660;--primary:#8b47e6;--primary-bright:#b388ff;--primary-ink:#fff;--good:#34d399;--danger:#f87171;--radius:10px;--shadow:0 1px 2px #00000033,0 6px 20px #00000045;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.shell{min-height:100vh}.topbar{position:-webkit-sticky;position:sticky;top:env(safe-area-inset-top,0);z-index:5;justify-content:space-between;gap:10px;padding:10px max(16px,env(safe-area-inset-left)) 10px max(16px,env(safe-area-inset-right));background:var(--surface);border-bottom:1px solid var(--line)}.brand,.topbar{display:flex;align-items:center}.brand{gap:8px;text-decoration:none;flex-shrink:0}.brand img{height:32px;width:32px;border-radius:8px;display:block}.nav{display:flex;align-items:center;gap:13px;flex-wrap:wrap;justify-content:flex-end}.nav a{color:var(--muted);text-decoration:none;font-size:14px}.nav a:hover{color:var(--primary-bright)}.logout{background:transparent;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:6px 10px;font-size:13px;cursor:pointer}.content{max-width:560px;margin:0 auto;padding:24px max(16px,env(safe-area-inset-left)) 90px max(16px,env(safe-area-inset-right))}.page h1{font-size:26px;margin:0 0 6px;letter-spacing:-.01em}.sub{color:var(--muted);margin:0 0 20px}.sub em{color:var(--ink);font-style:normal;font-weight:600}.row{display:flex;gap:8px}.row input{flex:1 1;min-width:0;padding:12px 14px;background:var(--input);border:1px solid var(--field-line);border-radius:10px;color:var(--ink);font-size:16px}.row input:focus{outline:2px solid var(--primary);border-color:transparent}.btn-primary{padding:12px 18px;background:var(--primary);color:var(--primary-ink);border:none;border-radius:10px;font-weight:600;font-size:15px;cursor:pointer}.btn-primary:hover{background:#7a34d6}.btn-primary:disabled{opacity:.6;cursor:default}.card{margin-top:22px;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.card .name{color:var(--muted);font-size:13px}.card .price{font-size:34px;font-weight:700;color:var(--primary-bright);margin:2px 0 16px}.card dl{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin:0}.card dl>div{display:flex;flex-direction:column;gap:2px}.card dt{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.card dd{margin:0;font-size:16px;font-weight:600}.card .ts{margin-top:16px;color:var(--muted);font-size:12px}.err{color:var(--danger);margin-top:14px}.err,.ok-msg{font-size:14px}.ok-msg{color:var(--good);margin:4px 0}.note{margin-top:24px;color:var(--muted);font-size:13px}.note b{color:var(--primary-bright);font-weight:600}.note code{background:var(--raised);border:1px solid var(--line);padding:1px 6px;border-radius:6px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field span{color:var(--muted);font-size:13px}.field input{padding:12px 14px;background:var(--input);border:1px solid var(--field-line);border-radius:10px;color:var(--ink);font-size:16px}.field input:focus{outline:2px solid var(--primary);border-color:transparent}.stack{display:flex;flex-direction:column;margin:8px 0 24px}.stack .btn-primary{width:100%}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px max(16px,env(safe-area-inset-left))}.auth-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px 22px;box-shadow:var(--shadow)}.auth-logo{display:flex;justify-content:center;margin-bottom:14px}.auth-logo img{height:128px;width:128px;border-radius:22px;display:block}.auth-title{text-align:center;font-size:20px;font-weight:700;margin:0}.auth-sub{color:var(--muted);text-align:center;margin:4px 0 22px;font-size:13px}.auth-card .btn-primary{width:100%;margin-top:4px}.notice{color:#f0c25a;font-size:13px;background:#2a2010;border:1px solid #4a3a14;border-radius:8px;padding:8px 10px;margin:0 0 14px}.userlist{display:flex;flex-direction:column;gap:8px}.userrow{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.uname{color:var(--ink);font-size:15px;font-weight:600}.urole{color:var(--muted)}.badge,.urole{font-size:12px}.badge{color:var(--primary-bright);border:1px solid var(--line);border-radius:999px;padding:3px 10px}.del{background:transparent;border:1px solid #5a2330;color:var(--danger);border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer}.install-hint{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;background:var(--raised);border-top:1px solid var(--line);color:var(--ink);font-size:13px;padding:10px max(14px,env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-right))}.install-hint span{flex:1 1}.install-hint b{color:var(--primary-bright)}.ih-install{background:var(--primary);color:#fff;border:none;border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer}.ih-x{background:transparent;border:none;color:var(--muted);font-size:16px;cursor:pointer}.mgrow{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:12px 0}.mgrow span{color:var(--ink);font-size:13px}.mgrow span:first-child{flex:1 1}.mgrow input{width:64px;background:var(--input);border:1px solid var(--field-line);border-radius:8px;color:var(--ink);font-size:16px;padding:6px 8px;text-align:right}.totgrid{display:flex;gap:10px}.tot{flex:1 1;background:var(--raised);border-radius:10px;padding:10px}.tot-m{background:#10241a;border:1px solid #1e4634}.tot-l{color:var(--muted);font-size:12px}.tot-m .tot-l{color:var(--good)}.tot-v{color:var(--ink);font-size:20px;font-weight:700}.tot-m .tot-v{color:var(--good)}.wabox{background:#10241a;border:1px solid #1e4634;border-radius:14px;padding:14px;margin-top:14px}.wa-h{font-size:14px;font-weight:600}.wa-h,.wabox input{color:var(--ink);margin-bottom:10px}.wabox input{width:100%;box-sizing:border-box;background:var(--input);border:1px solid var(--field-line);border-radius:10px;font-size:16px;padding:10px 12px}.wa-btn{width:100%;background:#25d366;color:#05351c;border:none;border-radius:10px;padding:11px;font-size:14px;font-weight:700;cursor:pointer}.wa-msg{color:var(--muted);font-size:12px;margin-top:8px}.invlist{display:flex;flex-direction:column;gap:8px;margin-top:16px}.invrow{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px}.iname{flex:1 1;min-width:0}.in-t{color:var(--ink);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.in-s{color:var(--muted);font-size:11px}.ival{color:var(--good);font-size:14px;font-weight:700;flex-shrink:0}