:root{--bg:#f3f6fb;--ink:#142a47;--muted:#60718a;--blue:#2563eb;--line:#dce5f0;--red:#ae2439;--soft:#edf3ff;--white:#fff;font-family:Inter,"Segoe UI","Microsoft YaHei UI",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,select,input,textarea{-webkit-tap-highlight-color:transparent}button,select{cursor:pointer}button{border:1px solid var(--line);border-radius:8px;padding:10px 16px;color:var(--ink);background:white;line-height:1.35}button:hover{border-color:#abc0e2;background:#f4f7fc}button.primary{color:white;background:var(--blue);border-color:var(--blue)}button.primary:hover{background:#174fc6}button:disabled{opacity:.55;cursor:wait}button.quiet{background:transparent}button.small{padding:6px 10px;font-size:.86rem}input,textarea,select{border:1px solid #bac9dc;border-radius:7px;background:#fff;padding:10px 12px;max-width:100%;color:var(--ink)}input,textarea{width:100%}textarea{resize:vertical;min-height:92px;line-height:1.6}input[type=file]{padding:11px;font-size:.9rem}input[type=file]::file-selector-button{border:0;background:var(--soft);color:#174ba4;padding:8px 11px;border-radius:5px;margin-right:10px}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid #b1ceff;outline-offset:2px}label{font-size:.9rem;font-weight:600;line-height:1.5}h1{font-size:1.75rem;line-height:1.3;margin:0 0 12px}h2{font-size:1.25rem;line-height:1.4;margin:0 0 10px}h3{font-size:1rem;margin:0 0 10px}p{line-height:1.65;margin:0 0 15px}.muted{color:var(--muted)}.small-text{font-size:.86rem}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 32px;border-bottom:1px solid var(--line);background:white}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-weight:700;white-space:nowrap}.brand-mark{font-size:1.25rem;letter-spacing:1px;background:#153f8e;color:white;border-radius:8px;padding:9px 10px}.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.header-actions label{font-weight:400}.header-actions select{padding:8px 10px}#account-label{font-size:.85rem;color:var(--muted)}#app{max-width:1400px;margin:0 auto;padding:34px 32px;min-height:calc(100vh - 160px)}footer{color:var(--muted);font-size:.8rem;text-align:center;padding:20px}.auth-wrap{max-width:440px;margin:50px auto}.panel{background:white;border:1px solid var(--line);border-radius:13px;padding:26px}.auth-wrap .panel{box-shadow:0 10px 45px #172f5310}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px}.hint{font-size:.84rem;color:var(--muted);line-height:1.55}.auth-wrap .primary{width:100%;margin-top:4px}.error{color:var(--red);background:#fff2f3;border-radius:7px;padding:11px 13px;font-size:.9rem;line-height:1.5}.info{color:#34567f;background:#edf4ff;border:1px solid #d5e5ff;border-radius:8px;padding:12px 15px;font-size:.88rem;line-height:1.65;margin-bottom:20px}.heading-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.tool-card{display:flex;flex-direction:column;align-items:flex-start;min-height:220px;padding:24px;border:1px solid var(--line);border-radius:12px;background:white}.tool-card p{font-size:.92rem;color:var(--muted);flex:1}.tool-card h2{font-size:1.15rem}.tool-card .badge{margin-bottom:18px}.badge{display:inline-block;color:#315caa;background:var(--soft);border-radius:5px;padding:5px 8px;font-size:.78rem}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:15px}.toolbar.end{justify-content:flex-end}.tool-layout{display:grid;grid-template-columns:350px minmax(0,1fr);gap:22px}.tool-layout.wide-left{grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr)}.formula-list{display:grid;gap:10px;margin-bottom:22px}.formula-option{text-align:left;padding:15px;width:100%}.formula-option.active{border-color:var(--blue);background:var(--soft)}.formula-option strong{display:block;margin-bottom:5px}.formula-option span{display:block;font-size:.84rem;line-height:1.5;color:var(--muted)}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:18px}.tabs button.active{color:#1f56b6;background:var(--soft);border-color:#aac7f4}.preview{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:.92rem;line-height:1.8;background:#f8faff;border:1px solid var(--line);border-radius:8px;padding:20px;margin:10px 0;max-height:660px;overflow:auto}.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed #bdcce0;border-radius:8px;font-size:.93rem;line-height:1.7}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px;margin:14px 0}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{padding:13px 14px;text-align:center;vertical-align:middle;border-bottom:1px solid #e5edf5;line-height:1.5;overflow-wrap:anywhere}th{color:#476283;font-weight:600;background:#eff4fb;white-space:nowrap}tbody tr:nth-child(even){background:#f7faff}tbody tr:last-child td{border-bottom:0}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:15px 0}.stat{border:1px solid var(--line);border-radius:8px;padding:16px;text-align:center;background:white}.stat strong{display:block;font-size:1.35rem;margin:6px 0}.stat span{font-size:.82rem;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.form-grid .full{grid-column:1/-1}.section-gap{margin-top:24px}.notice{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:13px 20px;background:#153f58;color:white;border-radius:9px;box-shadow:0 4px 22px #172f5330;z-index:20;font-size:.9rem;text-align:center}.notice.fail{background:#912a36}.file-name{font-size:.86rem;color:var(--muted);overflow-wrap:anywhere;margin-top:-7px;margin-bottom:15px}.progress{color:var(--blue);font-size:.9rem;margin:14px 0}.inline-separator{border:0;border-top:1px solid var(--line);margin:24px 0}.status-list{margin:0 0 18px;padding-left:22px;line-height:1.7;font-size:.88rem}.tool-intro{max-width:780px}.saved-message{color:#24714b;font-size:.86rem;margin:8px 0}.text-link{color:#1d56bd;background:none;border:0;padding:0;text-decoration:underline}.count{font-size:.85rem;color:var(--muted);font-weight:400}.record-actions{display:flex;justify-content:center;gap:6px}.upload-box{padding:20px;background:#f8faff;border:1px dashed #c2d2e6;border-radius:10px;margin:16px 0}.output-label{display:flex;justify-content:space-between;align-items:center;gap:12px}.warning{color:#82520e;background:#fff8e9;border:1px solid #eeddb5;border-radius:8px;padding:12px 15px;font-size:.87rem;line-height:1.65;margin-bottom:18px}.busy{opacity:.72;pointer-events:none}[hidden]{display:none!important}
.admin-home-card{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px;background:#eaf2ff;border:1px solid #bfd4f7;border-radius:12px;margin:0 0 26px}.admin-home-card .badge{margin-bottom:10px}.admin-home-card p{margin:0}.admin-home-card>button{flex-shrink:0}.admin-list-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.admin-list-heading .toolbar{margin-top:0}.permission-picker{margin:12px 0 20px;padding:18px;border:1px solid var(--line);border-radius:9px;min-width:0}.permission-picker legend{font-weight:600;padding:0 7px}.permission-picker .hint{margin-bottom:0}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.permission-option{display:flex;align-items:center;gap:12px;min-height:48px;padding:12px;border:1px solid #dce5f0;border-radius:7px;background:#f8faff;font-weight:400;cursor:pointer}.permission-option input[type=checkbox]{width:19px;height:19px;flex:0 0 19px;accent-color:var(--blue)}.status-pill{display:inline-block;padding:4px 9px;border-radius:5px;white-space:nowrap}.status-pill.active{color:#176143;background:#e7f4ed}.status-pill.inactive{color:#8b3742;background:#fff0f1}.admin-success{margin:0 0 20px;padding:14px 18px;color:#176143;background:#e7f4ed;border:1px solid #b9ddc9;border-radius:8px;line-height:1.65}.admin-cancel{margin-left:10px}.reset-password-form{max-width:500px}.danger{color:#a12537;border-color:#e8bac1}#account-editor{scroll-margin-top:20px}#admin-button[aria-current=page]{color:#1f56b6;background:var(--soft);border-color:#aac7f4}
@media(max-width:1050px){.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tool-layout,.tool-layout.wide-left{grid-template-columns:290px minmax(0,1fr)}.topbar{padding:16px 22px}#app{padding:28px 22px}.header-actions{gap:7px}.header-actions #account-label{display:none}}
@media(max-width:760px){.admin-home-card{align-items:flex-start;flex-direction:column;padding:20px}.permission-grid{grid-template-columns:1fr}.admin-list-heading .toolbar{width:100%}.permission-picker{padding:12px}}
@media(max-width:760px){.topbar{align-items:flex-start;padding:14px 16px;gap:10px}.brand{gap:8px}.brand #brand-title{display:none}.header-actions{justify-content:flex-end}.header-actions label{display:none}.header-actions button{font-size:.8rem;padding:8px}.header-actions select{max-width:170px;font-size:.85rem}#app{padding:24px 16px}.auth-wrap{margin:20px auto}.panel{padding:20px}.heading-row{gap:12px;flex-direction:column}.tool-grid{grid-template-columns:1fr}.tool-card{min-height:180px}.tool-layout,.tool-layout.wide-left{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr}.formula-list{grid-template-columns:repeat(2,minmax(0,1fr))}.formula-option{padding:12px}.formula-option span{display:none}h1{font-size:1.5rem}.preview{max-height:520px}th,td{padding:11px;min-width:100px}.toolbar button{flex:1}.header-actions .quiet{max-width:120px}}

/* Standalone web presentation; existing controls and API flows are preserved. */
.skip-link{position:fixed;top:8px;left:8px;z-index:50;padding:12px 18px;border-radius:8px;background:var(--ink);color:white;transform:translateY(-180%)}
.skip-link:focus{transform:translateY(0)}
.auth-wrap{max-width:500px;margin:32px auto}
.auth-subtitle{font-size:.95rem;margin-bottom:8px}
.auth-wrap .hint:last-child{margin-bottom:0}
.storage-summary{display:flex;align-items:center;gap:16px;margin:24px 0;padding:16px 20px;border:1px solid var(--line);border-radius:10px;background:#f8faff}
.storage-summary .badge{flex-shrink:0}
.storage-summary p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.6}
.tool-card{transition:border-color .15s,box-shadow .15s}
.tool-card:hover{border-color:#a9c1e5;box-shadow:0 7px 24px #153f8e0b}
@media(max-width:760px){.storage-summary{align-items:flex-start;flex-direction:column;gap:10px}.auth-wrap{margin:14px auto}.brand #brand-title{display:inline;font-size:.9rem}}
@media(prefers-reduced-motion:reduce){.tool-card{transition:none}}
