:root{--paper:#f9faf7;--coral:#da402d;--coral-soft:#fde8e4;--sage:#e1e3de;--forest:#2c392f;--ink:#1e2420;--muted:#6b716c;--card:#fff;--radius:.65rem;--sidebar:248px;--success:#25501c;--success-bg:#e4f0e2;--warn-bg:#fff3e0;--warn-ink:#9a5b12}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);margin:0;font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,sans-serif;line-height:1.7}a{color:var(--coral)}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--coral);outline-offset:2px}.admin-root{flex-direction:column;min-height:100dvh;display:flex}.admin-root>main{flex:1}.admin-version-footer{width:100%;max-width:74rem;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center;margin:0 auto;padding:0 clamp(1rem,3vw,2.5rem) 1.5rem;font-size:.75rem}.brand{color:var(--muted);margin:0;font-size:.9rem}h1{margin:.25rem 0 .75rem;font-size:1.75rem;line-height:1.3}.badge{border:1px solid var(--coral);color:var(--coral);border-radius:999px;margin:0 0 1rem;padding:.15rem .75rem;font-size:.9rem;display:inline-block}.lead{color:var(--muted);margin:0 0 1.5rem;font-size:.9rem}.muted{color:var(--muted);font-size:.9rem}.status{border:1px solid var(--sage);border-radius:var(--radius);background:var(--card);margin:0 0 2rem}.status div{justify-content:space-between;gap:1rem;padding:.75rem 1rem;display:flex}.status div+div{border-top:1px solid var(--sage)}.status dt{margin:0}.status dd{color:var(--muted);margin:0}footer{color:var(--muted);font-size:.85rem}.login-shell{place-items:center;min-height:100dvh;padding:1.5rem clamp(1rem,3vw,2rem);display:grid}.login-card{background:var(--card);border:1px solid var(--sage);border-radius:var(--radius);width:100%;max-width:420px;padding:2rem 1.75rem 1.75rem;box-shadow:0 12px 40px #2c392f0f}.login-brand{align-items:center;gap:.85rem;margin-bottom:1.5rem;display:flex}.stamp{flex-shrink:0;width:56px;height:56px;display:block;transform:rotate(-5deg)}.login-brand .wm{color:var(--ink);font-size:1.05rem;font-weight:700}.login-brand .sub{color:var(--muted);font-size:.8rem}.login-card h1{margin:.25rem 0 .35rem;font-size:1.45rem}.login-steps{justify-content:center;gap:.4rem;margin-bottom:1.25rem;display:flex}.login-dot{background:var(--sage);border-radius:50%;width:8px;height:8px;display:inline-block}.login-dot.on{background:var(--coral)}.mfa-hint{color:var(--muted);background:var(--coral-soft);border-radius:var(--radius);margin-bottom:1rem;padding:.75rem;font-size:.85rem}.back-link{color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:none;margin-bottom:1rem;padding:0;font-size:.85rem;display:inline-block}.back-link:hover{color:var(--coral)}.login-form{gap:1rem;margin:0;display:grid}.login-form label{gap:.35rem;font-size:.82rem;font-weight:600;display:grid}.login-form input{border:1px solid var(--sage);border-radius:var(--radius);width:100%;min-height:2.75rem;font:inherit;background:#fdfdfb;padding:.7rem .85rem;font-weight:400;transition:border-color .15s,box-shadow .15s}.login-form input:focus{border-color:var(--coral);outline:none;box-shadow:0 0 0 3px #da402d1f}.login-form button,.btn-primary{border-radius:var(--radius);background:var(--coral);color:#fff;width:100%;min-height:2.75rem;font:inherit;cursor:pointer;border:none;justify-content:center;align-items:center;padding:.75rem 1rem;font-weight:600;transition:background .15s;display:inline-flex}.login-form button:hover,.btn-primary:hover{background:#c43828}.login-form [role=alert]{color:var(--coral);margin:0;font-size:.85rem;font-weight:400}.login-link-row{text-align:center;margin-top:1rem}.login-link-row a{color:var(--coral);font-size:.88rem;text-decoration:none}.login-link-row a:hover{text-decoration:underline}.admin-shell{width:100%;min-height:100dvh;display:flex}.admin-sidebar{width:var(--sidebar);background:var(--card);border-right:1px solid var(--sage);flex-direction:column;flex-shrink:0;align-self:flex-start;height:100dvh;display:flex;position:sticky;top:0}.side-brand{border-bottom:1px solid var(--sage);align-items:center;gap:.65rem;padding:1.15rem 1rem;display:flex}.side-brand .stamp{width:40px;height:40px;transform:rotate(-5deg)}.side-brand strong{color:var(--ink);font-size:.92rem;display:block}.side-brand span{color:var(--muted);font-size:.72rem}.admin-nav{flex:1;padding:.75rem .6rem;overflow:auto}.admin-nav button{text-align:left;border-radius:var(--radius);cursor:pointer;width:100%;color:var(--ink);font:inherit;background:0 0;border:none;align-items:center;gap:.55rem;margin-bottom:.15rem;padding:.65rem .75rem;font-size:.88rem;display:flex}.admin-nav button:hover{background:#f0f1ed}.admin-nav button.active{background:var(--coral-soft);color:var(--coral);font-weight:600}.admin-nav button svg{opacity:.85;flex-shrink:0;width:18px;height:18px}.side-foot{border-top:1px solid var(--sage);color:var(--muted);padding:1rem;font-size:.75rem}.admin-main{flex-direction:column;flex:1;min-width:0;display:flex}.admin-topbar{background:var(--card);border-bottom:1px solid var(--sage);z-index:10;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.admin-topbar h2{margin:0;font-size:1.05rem}.admin-topbar .meta{color:var(--muted);margin:.15rem 0 0;font-size:.8rem}.admin-topbar .badge{background:var(--coral-soft);color:var(--coral);border:none;border-radius:999px;margin:0 0 0 .35rem;padding:.15rem .45rem;font-size:.72rem;font-weight:600;display:inline-block}.admin-topbar .topbar-actions{align-items:center;gap:.75rem;display:flex}.admin-topbar .topbar-actions button,.btn-ghost{border:1px solid var(--sage);border-radius:var(--radius);min-height:2.2rem;color:var(--ink);font:inherit;cursor:pointer;background:#fff;padding:.4rem .85rem;font-size:.85rem;text-decoration:none}.admin-topbar .topbar-actions button:hover,.btn-ghost:hover{background:#f0f1ed}.admin-content{flex:1;min-width:0;padding:1.25rem clamp(1rem,2.5vw,1.75rem) 2.5rem}.admin-dashboard{width:100%;max-width:74rem;margin:0 auto;padding:0}.dashboard-header{display:none}.dashboard-actions{align-items:center;gap:.75rem;display:flex}.dashboard-actions button,.dashboard-actions a,.review-actions button,.inline-form button,.compact-list button{border:1px solid var(--sage);border-radius:var(--radius);min-height:2.5rem;color:var(--ink);font:inherit;cursor:pointer;background:#fff;padding:.45rem .8rem;text-decoration:none}.dashboard-actions button:hover,.review-actions button:hover,.inline-form button:hover,.compact-list button:hover{background:#f0f1ed}.dashboard-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem;margin:0 0 1.25rem;display:grid}.dashboard-metrics article,.dashboard-panel{border:1px solid var(--sage);border-radius:var(--radius);background:var(--card)}.dashboard-metrics article{gap:.1rem;padding:1rem 1.1rem;display:grid}.dashboard-metrics span,.dashboard-metrics small{color:var(--muted);font-size:.78rem}.dashboard-metrics strong{letter-spacing:-.02em;font-size:1.55rem;font-weight:700;line-height:1.25}.dashboard-panel{margin-bottom:1rem;padding:1.1rem 1.15rem;scroll-margin-top:4.5rem}.panel-heading{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem;display:flex}.panel-heading h2{margin:0;font-size:1.15rem}.panel-heading p{margin:.15rem 0 0}.status-chip{background:var(--warn-bg);min-height:1.8rem;color:var(--warn-ink);white-space:nowrap;border-radius:999px;align-items:center;padding:.1rem .6rem;font-size:.82rem;font-weight:600;display:inline-flex}.empty{color:var(--muted);margin:0;padding:.75rem 0}.review-list{gap:.75rem;display:grid}.review-card{border:1px solid var(--sage);border-radius:var(--radius);background:#fdfdfb;grid-template-columns:minmax(0,1fr) minmax(15rem,25rem);gap:.8rem 1.2rem;padding:1rem;display:grid}.review-card h3{margin:0;font-size:1rem}.review-card p,.review-card small{color:var(--muted);margin:.1rem 0;font-size:.88rem}.review-card label{gap:.25rem;font-size:.88rem;display:grid}.review-card textarea{resize:vertical;border:1px solid var(--sage);width:100%;min-height:4.5rem;font:inherit;border-radius:.4rem;padding:.45rem .55rem}.review-actions{grid-column:1/-1;justify-content:flex-end;gap:.5rem;display:flex}.review-actions .primary-action,.subscription-panel button.primary-action{background:var(--forest);color:#fff;border-color:var(--forest)}.review-actions .primary-action:hover:not(:disabled),.subscription-panel button.primary-action:hover:not(:disabled){background:#223029}.review-actions button:not(.primary-action){color:var(--coral);background:#fff;border-color:#e8b4ad}.review-actions button:not(.primary-action):hover:not(:disabled){background:var(--coral-soft)}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.compact-list{gap:.2rem;margin:0;padding:0;list-style:none;display:grid}.compact-list li{border-bottom:1px solid #eeeeea;justify-content:space-between;align-items:center;gap:1rem;padding:.65rem 0;display:flex}.compact-list li:last-child{border-bottom:0}.compact-list span{gap:.05rem;min-width:0;display:grid}.compact-list strong{font-weight:600}.compact-list small{color:var(--muted);font-size:.8rem}.compact-list button{min-height:2.2rem}.inline-form{gap:.5rem;margin-bottom:.65rem;display:flex}.inline-form input{border:1px solid var(--sage);width:100%;min-height:2.5rem;font:inherit;border-radius:.4rem;padding:.45rem .6rem}.inline-form button{background:var(--forest);color:#fff;border-color:var(--forest);white-space:nowrap}.inline-form button:hover:not(:disabled){background:#223029}.audit-panel time{color:var(--muted);white-space:nowrap;font-size:.78rem}.form-error{background:var(--coral-soft);color:#8a2115;border-radius:.45rem;margin:1rem 0;padding:.7rem .8rem}@media (max-width:700px){.admin-shell{flex-direction:column;padding-bottom:4.5rem}.admin-sidebar{z-index:50;border-right:none;border-top:1px solid var(--sage);flex-direction:row;width:100%;height:auto;position:fixed;inset:auto 0 0;overflow:auto}.side-brand,.side-foot{display:none}.admin-nav{flex:1;gap:.2rem;padding:.4rem;display:flex;overflow-x:auto}.admin-nav button{white-space:nowrap;width:auto;margin:0;padding:.5rem .65rem;font-size:.8rem}.admin-nav button svg{display:none}.admin-main{width:100%}.admin-content{padding:1rem .8rem 2rem}.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.review-card{grid-template-columns:1fr}.review-actions{justify-content:stretch}.review-actions button{flex:1}.dashboard-actions a,.dashboard-actions button{text-align:center;flex:1}}.compact-list{grid-template-columns:minmax(0,1fr)}.compact-list span{overflow-wrap:anywhere}.compact-list time{white-space:nowrap;flex:none}.mail-queue-summary{flex-wrap:wrap;gap:.6rem;margin:.6rem 0 .8rem;display:flex}.mail-queue-summary span{border:1px solid var(--sage);color:var(--muted);border-radius:.45rem;align-items:baseline;gap:.35rem;padding:.35rem .6rem;font-size:.8rem;display:inline-flex}.mail-queue-summary strong{color:var(--ink);font-size:1.05rem}.mail-alerts{color:#814c0e;background:#fff3dc;border-radius:.45rem;margin-top:.8rem;padding:.55rem .7rem;font-size:.82rem}.mail-alerts p{margin:.15rem 0}.mail-alerts strong{text-transform:uppercase;margin-right:.25rem}.form-note{color:var(--muted);margin:.35rem 0 .8rem;font-size:.85rem}.form-success{background:var(--success-bg);color:var(--success);border-radius:.45rem;margin:1rem 0;padding:.7rem .8rem}.subhead{margin:1.1rem 0 .3rem;font-size:1rem}.subscription-panel{min-width:0}.subscription-panel .panel-heading{flex-wrap:wrap}.subscription-panel input,.subscription-panel select{border:1px solid var(--sage);min-width:0;max-width:100%;min-height:2.75rem;font:inherit;background:#fff;border-radius:.4rem;padding:.45rem .6rem}.subscription-panel button{border:1px solid var(--sage);border-radius:var(--radius);min-height:2.75rem;color:var(--ink);font:inherit;cursor:pointer;background:#fff;padding:.45rem .9rem}.subscription-panel button:hover:not(:disabled){background:#f0f1ed}.subscription-panel button:disabled{opacity:.6;cursor:not-allowed}.subscription-panel button.primary-action{border-color:var(--forest);background:var(--forest);color:#fff}.subscription-panel button.primary-action:hover:not(:disabled){background:#223029}.field{gap:.25rem;min-width:0;font-size:.88rem;display:grid}.field input,.field select{width:100%}.panel-form{flex-wrap:wrap;align-items:flex-end;gap:.6rem .8rem;margin:.6rem 0;display:flex}.panel-form .field{flex:14rem}.panel-form .field-narrow{flex:0 16rem}.panel-form .form-note{flex:100%;margin:0}.list-status{color:var(--muted);overflow-wrap:anywhere;margin:.4rem 0 .8rem;font-size:.85rem}.list-more{justify-content:center;margin:0 0 1rem;display:flex}.list-more:last-child{margin-bottom:0}.entitlement-list{grid-template-columns:minmax(0,1fr);gap:.75rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.entitlement-subject{border:1px solid var(--sage);border-radius:var(--radius);overflow-wrap:anywhere;background:#fdfdfb;min-width:0;padding:.9rem 1rem}.entitlement-subject header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.entitlement-subject h3{margin:0;font-size:1rem}.entitlement-subject p{color:var(--muted);margin:.1rem 0;font-size:.88rem}.entitlement-subject .form-error,.entitlement-subject .form-success{margin:.5rem 0}.entitlement-subject .form-note{margin:.35rem 0}.entitlement-scroll{max-width:100%;margin-top:.5rem;overflow-x:auto}.entitlement-periods{border-collapse:collapse;width:100%;font-size:.85rem}.entitlement-periods th,.entitlement-periods td{text-align:left;vertical-align:middle;white-space:nowrap;border-bottom:1px solid #eeeeea;padding:.4rem .55rem}.entitlement-periods th{color:var(--muted);font-weight:500}.subject-actions{flex-wrap:wrap;gap:.5rem;margin-top:.7rem;display:flex}.subject-detail{border-top:1px dashed var(--sage);margin-top:.5rem;padding-top:.3rem}.subject-detail .subhead{margin-top:.6rem}.grant-section{border-top:1px solid #eeeeea;margin-top:1rem;padding-top:1rem}.grant-section .subhead{margin-top:0}.selected-target{border:1px solid var(--sage);background:#fdfdfb;border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .8rem;padding:.55rem .75rem;display:flex}.selected-target p{overflow-wrap:anywhere;min-width:0;margin:0}.grant-form{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.7rem .9rem;margin-top:.8rem;display:grid}.grant-form .selected-target,.grant-form .form-note,.grant-form .grant-actions,.grant-form .form-error,.grant-form .form-success{grid-column:1/-1;margin:0}.grant-actions{justify-content:flex-end;display:flex}@media (max-width:700px){.entitlement-subject header{display:block}.entitlement-subject header .status-chip{margin-top:.4rem}.grant-actions button{flex:1}.subject-actions button,.panel-form button{flex:100%}}
