/* 照片直播后台 全局样式 */
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:"Microsoft YaHei",system-ui,sans-serif;background:#f2f4f8;color:#333;font-size:14px}
a{text-decoration:none;color:#2b4a9b}
.layout{display:flex;min-height:100vh}
.sidebar{width:220px;background:linear-gradient(180deg,#1b2a4a,#243b6b);color:#fff;flex-shrink:0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;z-index:100}
.sidebar .logo{padding:22px 20px;font-size:18px;font-weight:bold;border-bottom:1px solid rgba(255,255,255,.12)}
.sidebar .logo span{color:#7fa0e8}
.sidebar nav{padding:12px 0}
.sidebar nav a{display:block;padding:13px 22px;color:rgba(255,255,255,.82);font-size:14px;transition:.2s;border-left:3px solid transparent}
.sidebar nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar nav a.on{background:rgba(255,255,255,.12);color:#fff;border-left-color:#7fa0e8;font-weight:bold}
.main{margin-left:220px;flex:1;display:flex;flex-direction:column;min-height:100vh}
.topbar{background:#fff;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;box-shadow:0 1px 4px rgba(0,0,0,.06);position:sticky;top:0;z-index:50}
.topbar .crumb{font-size:15px;font-weight:bold;color:#1b2a4a}
.topbar .user{font-size:13px;color:#666}
.topbar .user a{margin-left:12px}
.content{padding:24px 26px;flex:1}
.page-title{font-size:18px;font-weight:bold;margin-bottom:18px;color:#1b2a4a}
.card{background:#fff;border-radius:10px;box-shadow:0 2px 8px rgba(0,0,0,.04);padding:20px;margin-bottom:18px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat{background:#fff;border-radius:10px;padding:20px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.stat .num{font-size:30px;font-weight:bold;color:#1b2a4a}
.stat .lab{color:#999;font-size:13px;margin-top:6px}
.btn{display:inline-block;padding:9px 18px;border-radius:8px;font-size:14px;cursor:pointer;border:0;background:linear-gradient(135deg,#243b6b,#3b5aa8);color:#fff;transition:.2s}
.btn:hover{opacity:.9}
.btn-green{background:linear-gradient(135deg,#1a9d5a,#27ae60)}
.btn-red{background:linear-gradient(135deg,#d64545,#e05252)}
.btn-gray{background:#e8ebf1;color:#555}
.btn-sm{padding:5px 12px;font-size:13px;border-radius:6px}
.btn-danger{background:#fdecec;color:#c0392b;border:1px solid #f5c6c6}
.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
.toolbar input[type=text],.toolbar input[type=password],.toolbar input[type=search],.toolbar select{padding:9px 12px;border:1px solid #d5dae3;border-radius:8px;font-size:14px}
.toolbar input:focus{outline:none;border-color:#3b5aa8}
table.list{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.04)}
table.list th{background:#f7f9fc;padding:13px 14px;text-align:left;font-size:13px;color:#555;border-bottom:1px solid #e8ecf3}
table.list td{padding:13px 14px;border-bottom:1px solid #f0f2f7;font-size:13.5px;vertical-align:middle}
table.list tr:hover td{background:#fafbff}
.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px}
.tag-blue{background:#e8f0ff;color:#2b4a9b}
.tag-green{background:#e8f7ee;color:#1a7a4a}
.tag-red{background:#fdecec;color:#c0392b}
.tag-gray{background:#eef0f4;color:#777}
.pager{display:flex;gap:6px;justify-content:flex-end;margin-top:16px;align-items:center}
.pager a,.pager span{display:inline-block;padding:6px 12px;border-radius:6px;background:#fff;border:1px solid #e0e4ec;font-size:13px;color:#555}
.pager a:hover{border-color:#3b5aa8;color:#2b4a9b}
.pager .cur{background:#2b4a9b;color:#fff;border-color:#2b4a9b}
.form-row{margin-bottom:16px}
.form-row label{display:block;font-size:13px;color:#555;margin-bottom:6px;font-weight:600}
.form-row input[type=text],.form-row input[type=password],.form-row input[type=number],.form-row input[type=datetime-local],.form-row select,.form-row textarea{width:100%;max-width:520px;padding:10px 12px;border:1px solid #d5dae3;border-radius:8px;font-size:14px}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:#3b5aa8}
.form-row .hint{font-size:12px;color:#999;margin-top:4px}
.switch{position:relative;display:inline-block;width:46px;height:24px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#ccc;transition:.3s;border-radius:24px}
.slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:#fff;transition:.3s;border-radius:50%}
input:checked + .slider{background:#2b4a9b}
input:checked + .slider:before{transform:translateX(22px)}
.thumb-img{width:64px;height:64px;object-fit:cover;border-radius:6px;background:#f0f0f0}
.thumb-lg{width:96px;height:96px;object-fit:cover;border-radius:8px;background:#f0f0f0}
.empty{padding:60px 20px;text-align:center;color:#aaa;font-size:14px}
.alert{background:#e8f7ee;color:#1a7a4a;padding:12px 15px;border-radius:8px;margin-bottom:16px;font-size:14px}
.alert.err{background:#fdecec;color:#c0392b}
.upload-zone{border:2px dashed #c6cfdd;border-radius:12px;padding:36px;text-align:center;color:#8899aa;cursor:pointer;transition:.2s;background:#fafbff}
.upload-zone:hover{border-color:#3b5aa8;color:#2b4a9b;background:#f4f7ff}
.upload-zone input{display:none}
.modal{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:200;align-items:center;justify-content:center}
.modal.show{display:flex}
.modal-box{background:#fff;border-radius:12px;width:420px;max-width:92vw;padding:24px}
.modal-box h3{margin-bottom:18px;font-size:16px}
.grid-img{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.grid-img .item{position:relative;border-radius:8px;overflow:hidden;background:#f0f0f0;cursor:pointer}
.grid-img .item img{width:100%;height:120px;object-fit:cover;display:block}
.grid-img .item .feature{position:absolute;top:6px;left:6px;background:rgba(255,215,0,.92);color:#7a5b00;font-size:11px;padding:2px 8px;border-radius:12px}
.grid-img .item .del{position:absolute;top:6px;right:6px;background:rgba(0,0,0,.55);color:#fff;width:22px;height:22px;border-radius:50%;display:none;align-items:center;justify-content:center;font-size:12px}
.grid-img .item:hover .del{display:flex}
