:root{color-scheme:light;--bg:oklch(1 0 0);--surface:oklch(.979 .003 250);--ink:oklch(.25 .018 255);--muted:oklch(.46 .018 255);--line:oklch(.9 .008 250);--primary:oklch(.49 .17 252);--primary-hover:oklch(.43 .16 252);--danger:oklch(.48 .19 25);--success:oklch(.38 .12 155);--focus:oklch(.68 .16 250);font-family:system-ui,"Microsoft YaHei",sans-serif;font-size:14px;color:var(--ink);background:var(--surface)}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus)}button{cursor:pointer;border:1px solid var(--line);border-radius:4px;background:var(--bg);color:var(--ink);padding:8px 14px;min-height:36px;transition:background-color .16s ease-out}button:hover{background:var(--surface)}button:disabled{opacity:.55;cursor:wait}button.primary{background:var(--primary);border-color:var(--primary);color:var(--bg)}button.primary:hover{background:var(--primary-hover)}button.text{background:transparent;border-color:transparent;color:var(--primary);padding:5px 8px}button.danger{color:var(--danger)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}.topbar{height:68px;border-bottom:1px solid var(--line);background:var(--bg);display:flex;justify-content:space-between;align-items:center;padding:0 5vw}.brand{font-size:20px;font-weight:650;color:var(--ink)}.brand span{font-size:13px;color:var(--muted);font-weight:400;margin-left:16px}#account{display:flex;gap:20px;align-items:center}main{max-width:1280px;margin:40px auto;padding:0 28px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px}h1{font-size:26px;line-height:1.4;letter-spacing:-.02em;margin:0 0 8px}h2{font-size:18px;margin:0;line-height:1.5}p{line-height:1.7}.muted,.footnote{color:var(--muted)}.muted{margin:4px 0}.footnote{font-size:12px;margin:20px 0 0}.toolbar{display:flex;align-items:center;gap:12px;margin:20px 0}.search-label{white-space:nowrap;display:flex;align-items:center;gap:14px;margin:0!important}.search-label input{width:240px}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:4px;background:var(--bg)}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{background:var(--surface);font-weight:500;font-size:13px;color:var(--muted)}td,th{padding:17px 20px;border-bottom:1px solid var(--line)}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--surface)}td .text{padding:4px 6px;min-height:32px}.cell-title{font-weight:600}.status{color:var(--success);font-size:12px}.status.off{color:var(--muted)}.pagination{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin:20px 0;color:var(--muted)}.empty{text-align:center;padding:50px 20px;color:var(--muted)}.login-panel{max-width:400px;margin:100px auto;background:var(--bg);padding:32px;border:1px solid var(--line);border-radius:6px}.login-panel form{margin-top:26px}.login-panel button{width:100%}label{display:block;font-size:13px;margin:16px 0}input:not([type=file]),select,textarea{display:block;width:100%;margin-top:7px;border:1px solid oklch(.79 .014 250);border-radius:4px;background:var(--bg);color:var(--ink);padding:9px 10px;min-height:38px}input::placeholder,textarea::placeholder{color:var(--muted)}input[readonly]{background:var(--surface)}textarea{resize:vertical}input[type=file]{margin-top:10px;width:100%;padding:10px 0}.error{color:var(--danger);font-size:13px}dialog{border:1px solid var(--line);border-radius:6px;width:min(600px,calc(100vw - 32px));max-height:calc(100vh - 48px);padding:24px;color:var(--ink);box-shadow:0 14px 60px oklch(.2 .01 250 / .16)}dialog::backdrop{background:oklch(.2 .01 250 / .4)}dialog.large{width:min(1160px,calc(100vw - 32px))}.dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}.dialog-heading>.text{font-size:24px;line-height:24px;color:var(--muted)}.dialog-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}.form-grid label{margin:12px 0}.wide{grid-column:1/-1}details{margin-top:16px}summary{cursor:pointer;color:var(--primary);padding:10px 0}.children-table th,.children-table td{padding:12px}.children-table img{width:52px;height:66px;object-fit:contain;display:block}.children-table a{display:block}.child-actions{display:flex;align-items:center;gap:3px}.input-action{display:flex;align-items:end;gap:8px}.input-action button{flex-shrink:0;min-height:38px}.wx-image{max-width:260px;display:block;margin:20px auto}.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:12px 22px;border-radius:5px;background:var(--ink);color:var(--bg);z-index:10;box-shadow:0 4px 20px oklch(.2 0 0 / .2)}.chart{margin-top:20px;display:flex;flex-direction:column;gap:8px;max-height:55vh;overflow:auto}.chart-row{display:grid;grid-template-columns:45px 1fr 44px;gap:12px;align-items:center;font-size:12px}.chart-track{height:14px;background:var(--surface)}.chart-fill{height:100%;background:var(--primary);min-width:0}.landing{max-width:460px;text-align:center;margin:6vh auto;padding:24px}.landing h1{font-size:24px}.qr-frame{padding:24px 0}.qr-frame img{max-width:100%;max-height:60vh;object-fit:contain}.landing .primary{width:100%}#landing-status{min-height:28px}
@media(max-width:700px){.topbar{padding:0 20px}.brand span{display:none}main{padding:0 16px;margin-top:24px}.page-heading{align-items:flex-start}.page-heading h1{font-size:23px}.page-heading p{max-width:22ch}.toolbar{flex-wrap:wrap}.search-label{flex:1}.search-label input{width:100%;min-width:150px}.form-grid{grid-template-columns:1fr}.wide{grid-column:1}td,th{padding:12px}.login-panel{margin:50px auto;padding:24px}dialog{padding:18px}.pagination{font-size:12px;gap:10px}.children-table{min-width:950px}.input-action{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
