*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"PingFang HK","Microsoft JhengHei",sans-serif;background:#0f172a;color:#e2e8f0;height:100vh;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:12px;background:#1e293b;padding:8px 16px;border-bottom:2px solid #334155;flex-wrap:wrap}
.brand{font-weight:700;font-size:18px;white-space:nowrap}
.tabs{display:flex;gap:6px;flex:1;flex-wrap:wrap}
.tab{display:flex;align-items:center;gap:6px;background:#334155;color:#e2e8f0;border:none;padding:8px 14px;border-radius:10px 10px 0 0;cursor:pointer;font-size:14px;transition:.15s}
.tab:hover{background:#475569}.tab.active{background:#3b82f6;color:#fff}.tab.locked{opacity:.7}
.tab .lock{font-size:12px}
.right{display:flex;gap:8px}
.btn{background:#475569;color:#fff;text-decoration:none;padding:7px 12px;border-radius:8px;font-size:13px;cursor:pointer;border:none}
.btn:hover{background:#64748b}
main{flex:1;position:relative;background:#fff}
#viewer{width:100%;height:100%;border:none;display:none}
.welcome{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:18px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:50}
.modal.hidden{display:none}
.modal-box{background:#1e293b;padding:24px;border-radius:14px;width:340px;max-width:90%}
.modal-box h3{margin-bottom:14px}
.modal-box input{width:100%;padding:10px;border-radius:8px;border:1px solid #475569;background:#0f172a;color:#fff;margin-bottom:10px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;align-items:center}
.modal-actions button,#pwOk{padding:8px 16px;border:none;border-radius:8px;cursor:pointer;background:#3b82f6;color:#fff}
#pwCancel{background:#475569}
.err{color:#f87171;font-size:13px;min-height:18px}
.admin{padding:20px;max-width:1050px;margin:0 auto}
table{width:100%;border-collapse:collapse;background:#1e293b;border-radius:10px;overflow:hidden;margin:14px 0}
th,td{padding:10px;text-align:left;border-bottom:1px solid #334155;font-size:14px;vertical-align:middle}
th{background:#334155}
.admin input[type=text],.admin input[type=password]{padding:6px;border-radius:6px;border:1px solid #475569;background:#0f172a;color:#fff}
.admin button{padding:6px 12px;border:none;border-radius:6px;background:#3b82f6;color:#fff;cursor:pointer;margin:2px}
form.inline{display:inline}
.admin h2{margin-top:22px}
.msg{background:#166534;padding:10px 14px;border-radius:8px;margin:10px 0}