.topnav{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topnav .in{max-width:1180px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:22px}
.topnav .brandmark{text-decoration:none;color:var(--ink)}
.topnav .links{display:flex;gap:4px;flex:1}
.topnav .links a{color:var(--muted);text-decoration:none;padding:7px 12px;border-radius:9px;font-weight:500}
.topnav .links a.on{background:var(--accent-soft);color:var(--accent)}
.me{position:relative}
.me .menu{position:absolute;right:0;top:44px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);min-width:220px;padding:8px;display:grid}
.me .menu > *{padding:8px 10px;border-radius:8px;text-align:left;background:none;border:0;text-decoration:none;color:var(--ink)}
.me .menu a:hover,.me .menu button:hover{background:var(--soft)}
@media(max-width:700px){.topnav .links{display:none}.topnav .in{gap:10px}.topnav .brandmark{flex:1}#meBtn{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}}

main{max-width:1180px;margin:0 auto;padding:26px 20px 80px}
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.pagehead h1{font-size:28px}
.back{display:inline-block;margin-bottom:8px;color:var(--muted);text-decoration:none;font-size:14px}

/* auth */
.auth{max-width:420px;margin:7vh auto 0}
.auth .brandmark{justify-content:center;font-size:28px;margin-bottom:22px}
.auth .brandmark b{width:46px;height:46px;font-size:22px;border-radius:13px}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
@media(max-width:860px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat{padding:18px 20px}
.stat .n{font-family:var(--head);font-size:34px;font-weight:600;line-height:1.1}
.stat .l{color:var(--muted);font-size:14px}
.stat.warn .n{color:var(--warn)} .stat.ok .n{color:var(--ok)} .stat.danger .n{color:var(--danger)} .stat.acc .n{color:var(--accent)}

.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.filters .seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:3px;overflow-x:auto;max-width:100%}
.filters .seg button{border:0;background:none;padding:7px 13px;border-radius:8px;color:var(--muted);font-weight:500;white-space:nowrap}
.filters .seg button.on{background:var(--accent);color:#fff}
.filters input{max-width:280px;margin-left:auto}
@media(max-width:700px){.filters input{max-width:none}}

table.list{width:100%;border-collapse:collapse}
table.list th{font-size:13px;color:var(--muted);font-weight:500;text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}
table.list td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
table.list tr:last-child td{border-bottom:0}
table.list tbody tr{cursor:pointer;transition:background .12s}
table.list tbody tr:hover{background:var(--soft)}
.ttl{font-weight:600}
@media(max-width:760px){
  table.list thead{display:none}
  table.list,table.list tbody,table.list tr,table.list td{display:block;width:100%}
  table.list tr{padding:12px 14px;border-bottom:1px solid var(--line)}
  table.list td{border:0;padding:2px 0}
  table.list td.hide-m{display:none}
}
.empty{text-align:center;padding:50px 20px;color:var(--muted)}
.empty .big{font-size:42px;margin-bottom:6px}

/* new request */
.newgrid{display:grid;grid-template-columns:1fr 1.15fr;gap:20px;align-items:start}
@media(max-width:900px){.newgrid{grid-template-columns:1fr}}
.drop{border:2px dashed #c7d2ee;border-radius:var(--radius);background:#f8faff;padding:28px;text-align:center;color:var(--muted);transition:background .15s,border .15s;cursor:pointer}
.drop.over{background:var(--accent-soft);border-color:var(--accent)}
.drop b{color:var(--accent)}
.files{display:grid;gap:10px;margin-top:14px}
.file{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.file .ic{width:40px;height:48px;border-radius:6px;background:var(--danger-soft);color:var(--danger);display:grid;place-items:center;font:700 11px var(--body);flex:0 0 auto}
.file .nm{flex:1;min-width:0}
.file .nm input{padding:5px 8px;font-weight:600;border-color:transparent;background:transparent}
.file .nm input:hover,.file .nm input:focus{border-color:var(--line);background:#fff}
.file .sub{font-size:12.5px;color:var(--muted);padding-left:9px}
.file .acts{display:flex;gap:4px;flex:0 0 auto}
.file.bad{border-color:#f1b4b4;background:#fff8f8}

.linkbox{display:flex;gap:8px;align-items:center;background:var(--accent-soft);border:1px solid #c7d6ff;border-radius:12px;padding:8px 8px 8px 14px}
.linkbox code{flex:1;font-size:14px;color:var(--accent);font-weight:600;word-break:break-all;font-family:inherit}
.msgbox{white-space:pre-line;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14.5px;margin-top:10px}
.success{max-width:720px;margin:0 auto}
.success .tick{width:70px;height:70px;border-radius:50%;background:var(--ok-soft);color:var(--ok);display:grid;place-items:center;font-size:34px;margin:0 auto 12px}

/* detail */
.detail{display:grid;grid-template-columns:1.5fr 1fr;gap:20px;align-items:start}
@media(max-width:900px){.detail{grid-template-columns:1fr}}
.kv2{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;font-size:15px}
.kv2 dt{color:var(--muted)} .kv2 dd{margin:0}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{position:relative;padding:0 0 16px 26px;font-size:14.5px}
.timeline li::before{content:"";position:absolute;left:6px;top:8px;bottom:-6px;width:2px;background:var(--line)}
.timeline li:last-child::before{display:none}
.timeline li i{position:absolute;left:0;top:4px;width:14px;height:14px;border-radius:50%;background:var(--line);border:3px solid #fff;box-shadow:0 0 0 1px var(--line)}
.timeline li.created i{background:var(--accent)} .timeline li.viewed i{background:var(--info)} .timeline li.approved i{background:var(--ok)}
.timeline li.changes i{background:var(--danger)} .timeline li.revoked i{background:var(--muted)} .timeline li.extended i{background:var(--warn)} .timeline li.downloaded i{background:#94a3b8}
.doclist{display:grid;gap:10px}
.docrow{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px}
.docrow .nm{flex:1;min-width:0}
.docrow .nm b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.note{background:var(--danger-soft);border-radius:12px;padding:14px 16px;color:#7f1d1d}
.note b{color:var(--danger)}
.signer{display:flex;gap:14px;align-items:center;background:var(--ok-soft);border-radius:12px;padding:14px 16px}
.section-gap>*+*{margin-top:20px}

/* placement editor */
.placewrap{display:grid;grid-template-columns:1fr 260px;gap:20px;margin-top:16px}
@media(max-width:760px){.placewrap{grid-template-columns:1fr}}
.placeprev{background:#e5e9f2;border-radius:12px;padding:14px;display:flex;justify-content:center;max-height:70vh;overflow:auto}
.placepage{position:relative;width:100%;max-width:520px;background:#fff;box-shadow:0 3px 14px rgba(0,0,0,.18);align-self:flex-start}
.placepage canvas{display:block;width:100%;height:auto}
.plbox{position:absolute;border:2px solid var(--accent);background:rgba(29,78,216,.12);border-radius:6px;cursor:move;display:grid;place-items:center;color:var(--accent);font-weight:700;font-size:13px;touch-action:none}
.plbox .h{position:absolute;right:-7px;bottom:-7px;width:16px;height:16px;border-radius:4px;background:var(--accent);border:2px solid #fff;cursor:nwse-resize}
.presets{display:flex;gap:6px;flex-wrap:wrap}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.consent input{margin-top:3px;width:18px;height:18px;accent-color:var(--accent)}

.users{display:grid;gap:8px}
.userrow{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.userrow .av{width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700}
.logoprev{width:72px;height:72px;border-radius:14px;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;background:#fff;color:var(--muted);font-size:12px}
.logoprev img{width:100%;height:100%;object-fit:contain}
