*{margin:0;padding:0}body{min-width:320px;min-height:100vh}#root{min-height:100vh}:root{--ground:#f3f4f2;--surface:#fff;--surface-sunken:#edeeec;--ink:#1f2523;--ink-muted:#5c6763;--ink-faint:#8b9490;--line:#e1e4e0;--line-strong:#c9cec9;--accent:#2c4c4f;--accent-strong:#1a3234;--accent-wash:#2c4c4f14;--accent-wash-strong:#2c4c4f29;--bronze:#9c7a46;--bronze-deep:#6f5630;--bronze-wash:#9c7a461f;--success:#3f7a56;--success-bg:#e7f1ea;--danger:#a3503f;--danger-bg:#f7ece8;--radius:10px;--radius-sm:7px;--shadow-sm:0 1px 2px #1418160a;--shadow-md:0 1px 2px #1418160a, 0 6px 20px -10px #1418161f}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#14181a;--surface:#1b2223;--surface-sunken:#101516;--ink:#e7ece9;--ink-muted:#9aa8a3;--ink-faint:#6c7975;--line:#2a3332;--line-strong:#3a4543;--accent:#7fb3ae;--accent-strong:#a2cbc6;--accent-wash:#7fb3ae1f;--accent-wash-strong:#7fb3ae33;--bronze:#cbaa74;--bronze-deep:#e4c791;--bronze-wash:#cbaa7429;--success:#7fb894;--success-bg:#7fb89424;--danger:#d08b78;--danger-bg:#d08b7824;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 1px 2px #0000004d, 0 8px 24px -12px #0000008c}}:root[data-theme=dark]{--ground:#14181a;--surface:#1b2223;--surface-sunken:#101516;--ink:#e7ece9;--ink-muted:#9aa8a3;--ink-faint:#6c7975;--line:#2a3332;--line-strong:#3a4543;--accent:#7fb3ae;--accent-strong:#a2cbc6;--accent-wash:#7fb3ae1f;--accent-wash-strong:#7fb3ae33;--bronze:#cbaa74;--bronze-deep:#e4c791;--bronze-wash:#cbaa7429;--success:#7fb894;--success-bg:#7fb89424;--danger:#d08b78;--danger-bg:#d08b7824;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 1px 2px #0000004d, 0 8px 24px -12px #0000008c}*{box-sizing:border-box}.erp-app{color:var(--ink);background:var(--ground);min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang TC,Microsoft JhengHei,sans-serif;transition:background .15s,color .15s}.erp-app h1,.erp-app h2,.erp-app h3{color:var(--ink);text-wrap:balance;margin:0;font-family:"Source Serif 4",Georgia,serif}.app-header{background:var(--ground);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:1.4rem 2rem 1.15rem;display:flex;position:relative}.app-header:after{content:"";background:linear-gradient(90deg, transparent, var(--bronze) 18%, var(--bronze) 82%, transparent);opacity:.5;height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand{align-items:center;gap:.85rem;display:flex}.brand-mark{background:linear-gradient(155deg, var(--bronze), var(--bronze-deep));color:#fbf6ec;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-family:"Source Serif 4",Georgia,serif;font-size:1rem;font-weight:600;display:flex}.brand-title{letter-spacing:.002em;font-size:1.22rem;font-weight:600}.brand-subtitle{color:var(--ink-muted);margin-top:.15rem;font-size:.76rem}.user-chip{color:var(--ink-muted);align-items:center;gap:.85rem;font-size:.85rem;display:flex}.user-chip strong{color:var(--ink);font-weight:600}.theme-toggle{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--ink-muted);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .15s,color .15s;display:inline-flex}.theme-toggle:hover{color:var(--ink);border-color:var(--line-strong)}.theme-toggle svg{width:17px;height:17px}.tab-nav{gap:.25rem;max-width:1100px;margin:0 auto;padding:.75rem 2rem 0;display:flex}.tab-btn{color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:0 0;border:none;padding:.65rem 1.1rem;font-family:Inter,sans-serif;font-size:.9rem;font-weight:600;transition:color .15s,background .15s;position:relative}.tab-btn:hover{color:var(--ink);background:var(--surface-sunken)}.tab-btn.active{color:var(--ink)}.tab-btn.active:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;bottom:-1px;left:.6rem;right:.6rem}.app-main{max-width:1100px;margin:0 auto;padding:1.5rem 2rem 3rem}.state-message{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);color:var(--ink-muted);padding:1rem 1.25rem;font-size:.9rem}.state-message.error{background:var(--danger-bg);color:var(--danger);border-color:#a3503f40}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;padding:.55rem 1rem;font-family:Inter,sans-serif;font-size:.85rem;font-weight:600;transition:border-color .15s,color .15s,background .15s,opacity .15s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-accent{color:var(--accent);border-color:var(--accent);background:0 0}.btn-accent:hover{background:var(--accent);color:#fff}.btn-outline{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-outline:hover{border-color:var(--line-strong);color:var(--ink);background:var(--surface-sunken)}.btn-ghost{color:var(--ink-muted);border-color:var(--line);background:0 0}.btn-ghost:hover{background:var(--surface-sunken);color:var(--ink)}.btn-danger-ghost{color:var(--danger);background:0 0;border-color:#a3503f4d}.btn-danger-ghost:hover{background:var(--danger-bg)}.btn-sm{padding:.4rem .75rem;font-size:.8rem}.btn-block{width:100%}.btn-row{flex-wrap:wrap;gap:.5rem;display:flex}.toolbar{justify-content:flex-end;margin-bottom:1rem;display:flex}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.panel-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:1.25rem;padding:1.25rem 1.5rem}.panel-form h3{margin-bottom:1rem;font-size:1rem}.form-grid{grid-template-columns:repeat(2,1fr);gap:.9rem;margin-bottom:1rem;display:grid}.form-field{flex-direction:column;gap:.35rem;display:flex}.form-field.full{grid-column:1/-1}.form-field label{color:var(--ink-muted);font-size:.78rem;font-weight:600}.form-input,.form-select{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);padding:.55rem .7rem;font-family:Inter,sans-serif;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.form-input:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash-strong);outline:none}.form-check{color:var(--ink);align-items:center;gap:.5rem;font-size:.85rem;display:flex}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.data-table{border-collapse:collapse;width:100%;font-size:.875rem}.data-table thead th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);background:var(--surface-sunken);border-bottom:1px solid var(--line);padding:.75rem 1rem;font-size:.7rem;font-weight:700}.data-table tbody td{border-bottom:1px solid var(--line);vertical-align:middle;color:var(--ink);padding:.75rem 1rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.data-row:hover{background:var(--accent-wash)}.data-table td.mono{color:var(--ink-muted);font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.8rem}.data-table a.link-external{color:var(--accent);font-weight:500;text-decoration:none}.data-table a.link-external:hover{text-decoration:underline}.select-inline{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);padding:.35rem .55rem;font-family:Inter,sans-serif;font-size:.82rem}.badge{letter-spacing:.02em;border-radius:999px;align-items:center;padding:.2rem .6rem;font-size:.72rem;font-weight:600;display:inline-flex}.badge-success{background:var(--success-bg);color:var(--success)}.badge-muted{background:var(--surface-sunken);color:var(--ink-muted)}.badge-role{background:var(--bronze-wash);color:var(--bronze-deep);margin-right:.3rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .badge-role{color:var(--bronze)}}:root[data-theme=dark] .badge-role{color:var(--bronze)}.permission-cell{background:var(--surface-sunken)!important;padding:0!important}.permission-inner{padding:1.1rem 1.25rem}.permission-ap-row{border-bottom:1px solid var(--line);margin-bottom:.85rem;padding-bottom:.85rem}.permission-ap-row:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.permission-ap-title{margin-right:.5rem;font-size:.9rem;font-weight:600}.permission-current{color:var(--ink-muted);font-size:.8rem}.permission-roles-row{flex-wrap:wrap;align-items:center;gap:.9rem;margin-top:.5rem;display:flex}.checkbox-pill{color:var(--ink);cursor:pointer;border:1px solid var(--line);background:var(--surface);border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .6rem;font-size:.82rem;transition:border-color .15s,background .15s;display:flex}.checkbox-pill:hover{border-color:var(--line-strong)}.checkbox-pill input{accent-color:var(--accent)}.no-roles-hint{color:var(--ink-muted);font-size:.8rem;font-style:italic}.app-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.1rem;display:grid}.app-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;padding:1.25rem;transition:box-shadow .15s,border-color .15s,transform .15s;display:flex}.app-card:hover{box-shadow:var(--shadow-md);border-color:var(--line-strong);transform:translateY(-2px)}.app-card-avatar{background:var(--accent-wash);width:38px;height:38px;color:var(--accent);border-radius:9px;justify-content:center;align-items:center;margin-bottom:.85rem;font-family:"Source Serif 4",Georgia,serif;font-size:1rem;font-weight:600;display:flex}.app-card-name{margin-bottom:.4rem;font-size:1.02rem;font-weight:600}.app-card-roles{margin-bottom:1rem}.app-card-divider{border:none;border-top:1px dashed var(--line);margin:0 0 1rem}@media (width<=960px){.app-main{padding:1.5rem 1.25rem 3rem}.form-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.app-header{flex-wrap:wrap;gap:.6rem;padding:.85rem 1rem 1rem}.brand-title{font-size:1.05rem}.brand-subtitle{display:none}.user-chip{justify-content:space-between;width:100%;font-size:.8rem}.tab-nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding:.6rem 1rem 0;overflow-x:auto}.tab-nav::-webkit-scrollbar{display:none}.tab-btn{flex-shrink:0;padding:.6rem .85rem;font-size:.85rem}.app-main{padding:1.1rem .85rem 2.5rem}.form-grid{grid-template-columns:1fr;gap:.75rem}.panel-form{padding:1rem}.toolbar{justify-content:stretch}.toolbar .btn{width:100%}.app-grid{grid-template-columns:1fr}.btn-row{flex-direction:column;align-items:stretch}.btn-row .btn{width:100%}.permission-roles-row{flex-direction:column;align-items:flex-start}.permission-roles-row .btn{width:100%;margin-top:.4rem}}@media (width<=780px){.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.data-table{min-width:640px}}.btn:focus-visible,.tab-btn:focus-visible,.theme-toggle:focus-visible,.form-input:focus-visible,.form-select:focus-visible,.checkbox-pill:focus-within{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.app-card,.btn,.erp-app{transition:none}}
