*{box-sizing:border-box}:root{--bg:#f3f5f8;--card:#fff;--text:#1d232a;--muted:#69727d;--line:#e0e4e9;--accent:#d81b60;--accent2:#a9124a;--soft:#fff1f6;--ok:#167447;--warn:#8a5b00}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans Thai",Arial,sans-serif}
.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 22px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 10px rgba(0,0,0,.025)}
.brand{font-size:20px;font-weight:850}.subbrand{font-size:11px;color:var(--muted);margin-top:2px}
nav{display:flex;gap:5px;flex-wrap:wrap}nav a{padding:8px 10px;border-radius:9px;text-decoration:none;color:#424850;font-size:13px}nav a:hover,nav a.active{background:var(--soft);color:var(--accent2)}
.container{max-width:1500px;margin:20px auto;padding:0 18px}.footer{max-width:1500px;margin:0 auto 30px;padding:0 18px;color:var(--muted);font-size:11px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:17px;box-shadow:0 2px 10px rgba(0,0,0,.025)}
.grid{display:grid;gap:14px}.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}h1{font-size:25px;margin:0 0 8px}h2{font-size:18px;margin:0 0 10px}.muted{color:var(--muted)}.small{font-size:11px}
.field{margin-bottom:12px}.field label{display:block;font-weight:750;margin-bottom:5px;font-size:13px}
input,select,textarea{width:100%;border:1px solid #cfd5dc;border-radius:10px;padding:10px 11px;font:inherit;background:#fff;outline:none}textarea{resize:vertical;min-height:76px}
input:focus,select:focus,textarea:focus{border-color:#c64576;box-shadow:0 0 0 3px rgba(216,27,96,.08)}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.push{margin-left:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:10px;padding:9px 13px;background:#e9edf1;color:#24292f;text-decoration:none;font-weight:750;cursor:pointer}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent2)}.btn.sm{padding:6px 8px;font-size:11px}.btn:disabled{opacity:.5;cursor:not-allowed}
.notice{border:1px solid #efd89c;background:#fff8e7;color:#755315;border-radius:12px;padding:11px 13px;margin:12px 0}.notice.ok{border-color:#b8ddc8;background:#edf8f2;color:#155d36}.notice.error{border-color:#edc2c2;background:#fff0f0;color:#852626}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:13px 0}.stat{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fafbfc}.stat .n{font-size:23px;font-weight:850}.stat .t{font-size:11px;color:var(--muted)}
.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:13px}.file-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;min-width:0}.thumb{height:170px;background:#eef1f4;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.thumb img{width:100%;height:100%;object-fit:cover}.thumb .placeholder{font-weight:850;font-size:34px;color:#9aa2aa}.file-body{padding:11px}.file-name{font-weight:800;line-height:1.3;word-break:break-word;min-height:36px}.file-meta{font-size:11px;color:var(--muted);margin-top:6px}.badges{display:flex;gap:5px;flex-wrap:wrap;margin:7px 0}.tag{display:inline-block;border-radius:999px;padding:3px 7px;font-size:10px;background:#eef1f4}.tag.ok{background:#e7f5ed;color:#17623b}.tag.pink{background:#fde7f0;color:#a11249}.tag.warn{background:#fff1d7;color:#7c5200}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}table{border-collapse:collapse;width:100%;min-width:900px;background:#fff}th,td{padding:9px 10px;border-bottom:1px solid #edf0f3;text-align:left;vertical-align:top;font-size:12px}th{background:#f8f9fa;position:sticky;top:0;z-index:1;color:#555}.link{color:#b1124f;text-decoration:none}.link:hover{text-decoration:underline}
.owner-layout{display:grid;grid-template-columns:340px 1fr;gap:14px}.owner-list{max-height:760px;overflow:auto}.owner-card{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:11px;padding:10px;margin-bottom:7px}.owner-card:hover,.owner-card.active{background:var(--soft);border-color:#e08baa}
.loader{display:none;align-items:center;gap:10px;margin:12px 0}.loader.on{display:flex}.spinner{width:21px;height:21px;border-radius:50%;border:3px solid #e7e9ec;border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:100;display:flex;align-items:center;justify-content:center;padding:24px}.modal[hidden]{display:none}.modal-box{width:min(1100px,96vw);max-height:92vh;overflow:auto;background:#101214;color:#fff;border-radius:15px;padding:14px;position:relative}.modal-close{position:absolute;right:9px;top:7px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.13);color:#fff;font-size:23px;cursor:pointer}.preview-media{display:block;max-width:100%;max-height:78vh;margin:auto}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:18px}.login-card{width:min(450px,100%)}code{background:#eef0f2;padding:2px 5px;border-radius:5px}
@media(max-width:900px){.grid.two,.grid.three,.owner-layout{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.stats{grid-template-columns:1fr 1fr}.file-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}

.preview-frame{display:block;width:100%;height:75vh;border:0;background:#fff;border-radius:10px}
