:root{--bg:#edf3fb;--panel:#fff;--panel-muted:#f5f9ff;--panel-strong:#0f172a;--text:#16314f;--text-muted:#5f7491;--line:#d6e2f2;--line-strong:#b7cbe6;--primary:#1768e5;--primary-strong:#0d4fc8;--primary-soft:#dcebff;--success:#1f8f5f;--danger:#c53b50;--shadow:0 18px 45px #1b45811f;--font-body:"Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Heiti TC", sans-serif;--font-heading:"Avenir Next Condensed", "Arial Narrow", "Noto Sans TC", "PingFang TC", sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{background:radial-gradient(circle at top left, #1768e526, transparent 28%), linear-gradient(180deg, #f7faff 0%, var(--bg) 100%);color:var(--text);font-family:var(--font-body), sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{grid-template-columns:280px 1fr;min-height:100vh;display:grid}.sidebar-shell{background:linear-gradient(#0b4db8 0%,#123d83 100%);flex-direction:column;display:flex}.sidebar-topbar{justify-content:space-between;align-items:center;padding:24px 24px 0;display:flex}.sidebar-topbar-user{color:#f7d35a;font-weight:700}.button-text{color:#f7d35a;background:0 0;border:0;padding:0;font-weight:700}.button-text:hover{opacity:.82}.sidebar{color:#fff;border-right:1px solid #d6e2f2bf;flex-direction:column;flex:1;gap:24px;padding:32px 24px;display:flex}.brand{gap:8px;display:grid}.brand-mark{width:52px;height:52px;font-family:var(--font-heading), sans-serif;background:#ffffff29;border-radius:18px;justify-content:center;align-items:center;font-size:1.25rem;font-weight:700;display:inline-flex}.brand h1,.brand h2,.page-title,.card-title,.auth-panel h1{font-family:var(--font-heading), sans-serif}.brand p,.sidebar-note,.field-hint,.muted{color:#ffffffb8}.sidebar-app-name{margin:0;font-size:2.15rem;line-height:1.2}.section-title-strong{color:var(--primary-strong);font-size:1.2rem;font-weight:800}.sidebar-user{background:#ffffff14;border:1px solid #ffffff29;border-radius:18px;align-items:center;gap:10px;padding:14px 16px;display:flex}.nav{gap:10px;display:grid}.nav-link{color:#ffffffd6;border:1px solid #0000;border-radius:16px;align-items:center;gap:12px;padding:14px 16px;transition:all .16s;display:flex}.nav-link.active,.nav-link:hover{color:#fff;background:#ffffff1f;border-color:#ffffff2e}.content{padding:28px}.topbar{justify-content:flex-end;align-items:center;gap:16px;margin-bottom:24px;display:flex}.panel,.card,.auth-panel{box-shadow:var(--shadow);background:#ffffffeb;border:1px solid #d6e2f2e6;border-radius:24px}.panel{padding:28px}.toolbar{justify-content:space-between;align-items:center;gap:16px;display:flex}.panel-muted{color:var(--text-muted);margin:8px 0 0}.card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.card{padding:20px}.card-label{color:var(--text-muted);font-size:.92rem}.card-value{margin-top:10px;font-size:1.9rem;font-weight:700}.section-grid{grid-template-columns:1.4fr 1fr;gap:18px;margin-top:18px;display:grid}.list{gap:14px;display:grid}.list-item{border:1px solid var(--line);background:var(--panel-muted);border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex}.badge{background:var(--primary-soft);color:var(--primary-strong);border-radius:999px;align-items:center;padding:6px 10px;font-size:.82rem;font-weight:700;display:inline-flex}.auth-shell{background:linear-gradient(160deg,#0f2c5beb,#1768e5e0),linear-gradient(#0e3672,#1450a8);justify-content:center;align-items:center;min-height:100vh;padding:32px;display:flex;position:relative}.auth-page-locale{position:absolute;top:32px;right:32px}.auth-title-wrap{width:min(680px,100%);margin-bottom:18px}.auth-page-title{color:#fff;font-family:var(--font-heading), sans-serif;text-align:center;white-space:nowrap;margin-top:-18px;font-size:2.75rem;font-weight:700}.auth-panel{justify-self:center;width:min(480px,100%);padding:32px}.auth-panel-compact{gap:28px;display:grid}.auth-panel .brand p{color:var(--text-muted)}.locale-switcher{flex-wrap:wrap;gap:8px;display:inline-flex}.locale-link{border:1px solid var(--line);color:var(--text-muted);border-radius:999px;padding:8px 12px}.locale-link.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-strong)}.form{gap:16px;margin-top:24px;display:grid}.search-form{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end}.search-form-actions{grid-column:1/-1}.field{gap:8px;display:grid}.field label{font-size:.92rem;font-weight:700}.input,.select,.textarea{border:1px solid var(--line-strong);width:100%;color:var(--text);background:#fff;border-radius:14px;padding:14px 16px}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);outline:2px solid #1768e529}.textarea{resize:vertical;min-height:120px}.button,.button-secondary,.button-danger{border:0;border-radius:14px;justify-content:center;align-items:center;padding:13px 18px;font-weight:700;display:inline-flex}.button-small{border-radius:12px;padding:9px 14px;font-size:.92rem}.button{background:linear-gradient(135deg, var(--primary), var(--primary-strong));color:#fff}.button-secondary{border:1px solid var(--line);color:var(--text);background:#fff}.auth-button-secondary{color:#fff;background:linear-gradient(135deg,#f7a54a,#e97a18);border-color:#d96a0b;box-shadow:0 12px 24px #d96a0b33}.auth-button-secondary:hover{filter:brightness(1.04)}.button-danger{color:var(--danger);background:#fff2f4;border:1px solid #c53b5038}.button-secondary.is-disabled{opacity:.45;pointer-events:none}.error-text{color:var(--danger);font-size:.9rem}.success-text{color:var(--success);font-size:.9rem}.toast-stack{z-index:80;pointer-events:none;flex-direction:column;gap:12px;display:flex;position:fixed;top:24px;right:24px}.toast{border:1px solid #0000;border-radius:16px;min-width:min(360px,100vw - 32px);max-width:min(420px,100vw - 32px);padding:14px 18px;font-size:.95rem;font-weight:600;line-height:1.5;box-shadow:0 18px 40px #0b244a33}.toast-success{color:#14663d;background:#f0fcf6f5;border-color:#208c582e}.toast-error{color:#a1263f;background:#fff5f6f7;border-color:#c53b502e}.table-wrap{overflow:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;padding:14px 10px}.table th{color:var(--text-muted);font-size:.9rem;font-weight:700}.pagination{justify-content:space-between;align-items:center;gap:16px;margin-top:18px;display:flex}.pagination-summary,.pagination-page{color:var(--text-muted);font-size:.92rem}.pagination-controls{align-items:center;gap:10px;display:flex}.dialog-backdrop{z-index:40;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a183073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog-panel{background:#fff;border:1px solid #d6e2f2e6;border-radius:24px;width:min(640px,100%);max-height:calc(100vh - 48px);padding:20px 20px 24px;overflow:auto;box-shadow:0 28px 80px #0b244a47}.dialog-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.dialog-close{border:1px solid var(--line);width:40px;height:40px;color:var(--text);background:#fff;border-radius:999px;font-size:1.4rem;line-height:1}.dialog-actions{justify-content:flex-end;gap:12px;margin-top:20px;display:flex}.dialog-actions-between{justify-content:space-between;align-items:center}.dialog-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.dialog-form-span{grid-column:1/-1}.detail-sheet{gap:12px;display:grid}.detail-grid{border:1px solid var(--line);border-radius:16px;grid-template-columns:minmax(140px,180px) minmax(0,1fr);display:grid;overflow:hidden}.detail-label,.detail-value{padding:14px 16px;line-height:1.6}.detail-label{border-right:1px solid var(--line);background:var(--panel-muted);font-size:.92rem;font-weight:700}.detail-value{white-space:pre-wrap;word-break:break-word;background:#fff}.dialog-toggle{margin-top:4px}.dialog-hint{color:var(--text-muted)}@media (max-width:1100px){.shell,.auth-shell,.section-grid,.card-grid{grid-template-columns:1fr}.sidebar{padding-bottom:12px}}@media (max-width:720px){.content,.auth-main,.auth-hero,.panel,.auth-panel{padding:20px}.topbar,.toolbar,.pagination{flex-direction:column;align-items:flex-start}.dialog-form-grid,.detail-grid{grid-template-columns:1fr}.detail-label{border-right:0;border-bottom:1px solid var(--line)}.search-form{grid-template-columns:1fr}}
