:root{--ink:#16372f;--paper:#f4f0e8;--panel:#fffdf8;--line:#ded8cb;--muted:#6e746d;--orange:#d86b32;--red:#a62e22}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:#1c2824;font-family:"Noto Sans TC",sans-serif;font-size:14px}a{color:inherit;text-decoration:none}.sidebar{background:var(--ink);color:#f8f3e8;width:236px;min-height:100vh;padding:28px 18px;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column}.brand{font:650 25px/1 "Fraunces",serif;letter-spacing:-.04em;display:flex;align-items:center;gap:7px;margin:0 10px 46px}.brand em{color:#f2a061;font-size:18px}.brand-dot{width:10px;height:10px;border-radius:50%;background:var(--orange)}.sidebar nav{display:grid;gap:4px}.nav-link{padding:11px 12px;border-radius:7px;color:#c7d1c9}.nav-link:hover,.nav-link.active{color:#fffaf0;background:#ffffff1a}.sidebar-foot{margin-top:auto;border-top:1px solid #ffffff29;padding:16px 10px 0;display:grid;gap:4px;font-size:12px}.sidebar-foot span{color:#a8b7ac}.main{margin-left:236px;min-height:100vh}.auth-main{max-width:520px;margin:8vh auto}.topbar{min-height:68px;padding:0 36px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.auth-main .topbar{padding:0;border:0}.topbar-actions{display:flex;gap:12px;align-items:center}.locale-form select{border:1px solid var(--line);border-radius:5px;padding:6px;background:var(--panel)}.quiet-button{background:none;border:0;color:var(--muted);cursor:pointer}.page{padding:34px 36px 56px;animation:rise .28s ease both}.page-title{font:650 34px/1.1 "Fraunces","Noto Sans TC",serif;letter-spacing:-.03em;margin:0 0 8px}.subtitle,.muted{color:var(--muted)}.eyebrow{font:500 11px "DM Mono",monospace;letter-spacing:.09em;color:var(--orange);text-transform:uppercase}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:20px;box-shadow:0 2px 0 #16372f08}.metric{font:650 34px/1 "Fraunces",serif;margin:10px 0 3px}.card h2{font:600 17px "Noto Sans TC",sans-serif;margin:0 0 16px}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;gap:6px}.field label{font-size:12px;color:var(--muted)}.field input,.field select,.field textarea{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:5px;background:#fffefa;font:inherit}.button{border:0;border-radius:5px;padding:10px 14px;background:var(--ink);color:white;cursor:pointer;font-weight:600}.button.accent{background:var(--orange)}.button[disabled]{opacity:.45;cursor:not-allowed}.actions{display:flex;gap:10px;align-items:end}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;font:500 11px "DM Mono",monospace;letter-spacing:.06em;color:var(--muted);padding:9px 8px;border-bottom:1px solid var(--line)}.data-table td{padding:12px 8px;border-bottom:1px solid #eee9df;vertical-align:top}.badge{display:inline-block;padding:3px 7px;border-radius:999px;background:#e4eee6;color:var(--ink);font-size:11px}.thumb{width:36px;height:36px;border-radius:6px;object-fit:cover;display:block;background:#eee9df}.flash{margin:12px 36px 0;padding:10px 13px;border-radius:6px;background:#e4eee6;color:var(--ink)}.flash-alert{background:#f7ddd6;color:var(--red)}.notice-box{border-left:3px solid var(--orange);background:#fff6ed;padding:12px 14px;color:#6a3a20}.auth-card{padding:30px}.auth-card .brand{color:var(--ink);margin:0 0 26px}.permission-grid{display:grid;grid-template-columns:1fr 100px;gap:8px;align-items:center}@keyframes rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-width:760px){.sidebar{width:100%;min-height:auto;height:auto;position:static;padding:16px}.sidebar nav{grid-template-columns:repeat(3,1fr)}.brand{margin:0 0 16px}.sidebar-foot{display:none}.main{margin:0}.page,.topbar{padding-left:18px;padding-right:18px}.grid-2,.grid-3,.form-grid{grid-template-columns:1fr}.flash{margin-left:18px;margin-right:18px}}.clickable-row{cursor:pointer}.clickable-row:hover{background:#16372f0d}.thumb-lg{width:140px;height:140px}.gallery{display:flex;gap:10px;flex-wrap:wrap}
