:root{--color-primary: #e8a849;--color-primary-dark: #d4952e;--color-primary-light: #f0b85a;--color-primary-bg: rgba(232, 168, 73, .08);--color-accent-glow: rgba(232, 168, 73, .15);--color-accent-border: rgba(232, 168, 73, .2);--color-accent-focus: rgba(232, 168, 73, .3);--color-bg: #0f1419;--color-surface: #1a2028;--color-surface-hover: #222a34;--color-navbar: #0a0d11;--color-text: #e8e6e3;--color-text-muted: #8b8d91;--color-border: rgba(255, 255, 255, .08);--color-border-hover: rgba(255, 255, 255, .15);--color-error: #ef4444;--color-error-bg: rgba(239, 68, 68, .1);--color-success: #34d399;--color-success-bg: rgba(52, 211, 153, .1);--color-warning: #f59e0b;--radius: 10px;--radius-sm: 6px;--radius-lg: 16px;--spacing: 24px;--header-height: 56px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", Roboto, sans-serif;--font-display: "Outfit", "Inter", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:var(--font);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}button{cursor:pointer;border:none;background:none;font:inherit}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}html,body{font-size:14px}#app{display:flex;height:100vh}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius);font-size:14px;font-weight:500;transition:all .2s}.btn-primary{background:var(--color-primary);color:var(--color-bg)}.btn-primary:hover{background:var(--color-primary-light);box-shadow:0 4px 16px var(--color-accent-border);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0) scale(.98)}.btn-secondary{background:#ffffff0f;color:var(--color-text-muted);border:1px solid var(--color-border)}.btn-secondary:hover{background:#ffffff1a;color:var(--color-text);border-color:var(--color-border-hover)}.btn:disabled{opacity:.4;pointer-events:none}.admin-layout{display:flex;flex-direction:column;width:100%;min-height:100vh}.admin-navbar{display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 var(--spacing);background:var(--color-navbar);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:100}.admin-brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:16px;font-weight:600;color:#fff;letter-spacing:-.01em}.admin-brand svg{height:22px;width:auto;color:#fff}.admin-navbar-right{display:flex;align-items:center;gap:4px}.btn-text{color:var(--color-text-muted);padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;transition:all .15s}.btn-text:hover{background:#ffffff14;color:var(--color-text)}.btn-sm{padding:6px 12px;font-size:13px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;gap:4px}.admin-main{flex:1;padding:var(--spacing);max-width:1200px;margin:0 auto;width:100%}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-header h2{font-size:18px;font-weight:600;color:var(--color-text)}#app:has(.login-card){align-items:center;justify-content:center;min-height:100vh}.login-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;background:var(--color-accent-glow);border:1px solid var(--color-accent-border);border-radius:var(--radius-sm);font-size:11px;font-weight:500;color:var(--color-primary);letter-spacing:.5px;text-transform:uppercase;margin-top:8px}.login-badge:before{content:"";width:5px;height:5px;background:var(--color-primary);border-radius:50%;animation:pulse-dot 2s ease-in-out infinite}.login-lang-btn{position:absolute;top:16px;right:16px;padding:4px 12px;border-radius:var(--radius-sm);border:1.5px solid var(--color-border);background:transparent;color:var(--color-text-muted);font-size:12px;font-weight:600;cursor:pointer;transition:border-color .2s,color .2s}.login-lang-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.login-card{position:relative;background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);padding:40px 36px;width:100%;max-width:400px;box-shadow:0 24px 64px #0006,0 0 0 1px #ffffff08 inset}.login-logo{display:flex;flex-direction:column;align-items:center;margin-bottom:28px}.login-logo svg{height:48px;width:auto;color:#fff;margin-bottom:10px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:500;color:var(--color-text-muted);margin-bottom:6px}.form-group input{width:100%;padding:12px 14px;border:1px solid var(--color-border);border-radius:var(--radius);font:inherit;font-size:14px;color:var(--color-text);background:#ffffff0a;transition:border-color .2s,box-shadow .2s;outline:none}.form-group input:focus{border-color:var(--color-accent-focus);box-shadow:0 0 0 3px var(--color-primary-bg)}.form-group input::placeholder{color:#555}.server-conflict-group{margin-bottom:16px;animation:fadeIn .2s ease-out}.server-conflict-hint{font-size:13px;color:var(--color-text-muted);margin-bottom:8px}.server-conflict-select{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius);background:#ffffff0a;color:var(--color-text);font-size:14px;outline:none}.server-conflict-select:focus{border-color:var(--color-accent-focus);box-shadow:0 0 0 3px var(--color-primary-bg)}.login-submit{width:100%;padding:14px;font-size:15px;font-weight:600;border-radius:var(--radius)}.alert{padding:10px 14px;background:var(--color-error-bg);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-sm);color:var(--color-error);font-size:13px;margin-bottom:16px}.device-grid{display:flex;flex-wrap:wrap;gap:.75rem}.grid-hint{text-align:center;color:var(--color-text-muted);font-size:13px;padding:8px 0 0;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.device-card{width:168px;flex:0 0 auto;background:var(--color-surface);border-radius:.75rem;border:2px solid var(--color-border);padding:.875rem .75rem .75rem;display:flex;flex-direction:column;align-items:center;gap:0;cursor:pointer;transition:all .2s}.device-card:hover{box-shadow:0 4px 24px #0000004d;border-color:var(--color-border-hover);background:var(--color-surface-hover)}.device-card-frame-box{width:128px;height:128px;display:flex;align-items:flex-start;justify-content:center}.device-card-frame{position:relative;background:#2a2520;border:2px solid #8a5a2b;border-radius:2px;box-shadow:inset 0 0 0 2px #3d3228;overflow:hidden}.device-card-frame.is-portrait{height:calc(100% - 12px);width:auto}.device-card-frame.is-landscape{width:calc(100% - 12px);height:auto}.frame-thumb{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.frame-thumb-rot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);object-fit:cover}.wifi-off-badge{position:absolute;top:4px;right:4px;width:20px;height:20px;background:#000000a6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;padding:3px}.device-card-name{font-size:.92rem;font-weight:600;color:var(--color-text);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;margin-top:auto}.device-card-status{display:flex;align-items:center;justify-content:center;gap:4px;font-size:.74rem;color:var(--color-text-muted);margin-top:.3rem}.status-online{color:var(--color-success);font-weight:500}.status-offline{color:var(--color-text-muted)}.status-sep{color:#ffffff26}.battery{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:500}.battery.ok{color:var(--color-success)}.battery.warn{color:var(--color-warning)}.battery.danger{color:var(--color-error)}.battery-icon{display:inline-block;width:18px;height:10px;border:1.5px solid currentColor;border-radius:2px;position:relative;overflow:visible}.battery-icon:after{content:"";position:absolute;right:-4px;top:50%;transform:translateY(-50%);width:2px;height:5px;background:currentColor;border-radius:0 1px 1px 0}.battery-fill{display:block;height:100%;background:currentColor;transform-origin:left;border-radius:1px}.showcase-ribbon{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none;z-index:2}.showcase-ribbon:after{content:"LIVE";position:absolute;top:10px;left:-28px;width:90px;padding:2px 0;background:var(--color-primary);color:var(--color-bg);font-size:9px;font-weight:700;letter-spacing:.1em;text-align:center;transform:rotate(-45deg);box-shadow:0 2px 6px #0006}.device-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary),0 4px 20px var(--color-accent-glow);background:var(--color-surface-hover)}.detail-panel{max-width:440px;margin:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden;animation:panelSlideIn .2s ease-out}.detail-section-header{font-size:18px;font-weight:600;color:var(--color-text);margin:2.5rem 0 1rem}@keyframes panelSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.detail-panel-bar{height:3px;background:var(--color-primary)}.detail-panel-header{display:flex;align-items:center;gap:10px;padding:16px 20px 0}.detail-panel-header h3{font-size:16px;font-weight:600;color:var(--color-text)}.detail-close{margin-left:auto;color:var(--color-text-muted);font-size:16px;padding:4px 8px;min-height:auto}.detail-panel .detail-grid{padding:16px 20px 20px}.loading{display:flex;align-items:center;justify-content:center;padding:48px}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.error-text{color:var(--color-error);font-size:14px;padding:24px 0;text-align:center}.detail-header{display:flex;align-items:center;gap:12px;margin-bottom:24px;flex-wrap:wrap}.detail-header h2{font-size:18px;font-weight:600;color:var(--color-text)}.detail-back{color:var(--color-text-muted);background:#ffffff0f;border:1px solid var(--color-border);padding:6px 12px;border-radius:var(--radius-sm);font-size:13px;transition:all .15s}.detail-back:hover{background:#ffffff1a;color:var(--color-text)}.showcase-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--color-accent-glow);border:1px solid var(--color-accent-border);color:var(--color-primary);border-radius:12px;font-size:12px;font-weight:500}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.detail-grid.detail-grid-3{grid-template-columns:1fr 1fr 1fr}@media (max-width: 900px){.detail-grid.detail-grid-3{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.detail-grid,.detail-grid.detail-grid-3{grid-template-columns:1fr}}.detail-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--spacing)}.detail-card h3{font-size:14px;font-weight:600;color:var(--color-text);margin-bottom:14px}.welcome-preview{background:#ffffff08;border:1px solid var(--color-border);border-radius:var(--radius-sm);height:180px;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:12px}.welcome-preview img{width:100%;height:100%;object-fit:contain}.welcome-placeholder{font-size:13px;color:var(--color-text-muted)}.welcome-actions{display:flex;justify-content:space-between;gap:8px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.stat-item{background:#ffffff08;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:14px 12px;text-align:center}.stat-value{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-primary);line-height:1;margin-bottom:4px}.stat-label{font-size:12px;color:var(--color-text-muted)}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--color-border);font-size:14px;color:var(--color-text)}.setting-value{font-weight:500;color:var(--color-text-muted)}.btn-start-showcase{margin-top:16px;padding:14px 16px;font-size:15px;font-weight:600;border-radius:var(--radius)}.danger-zone{margin-top:24px}.btn-danger{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:14px 16px;background:var(--color-error);color:#fff;border-radius:var(--radius);font-size:15px;font-weight:600;transition:all .15s}.btn-danger:hover{background:#dc2626;box-shadow:0 4px 12px #ef444440}.btn-danger:disabled{opacity:.4;pointer-events:none}.danger-hint{margin-top:10px;font-size:12px;color:var(--color-error);text-align:center}.upload-status{margin-top:8px;padding:8px 12px;border-radius:var(--radius-sm);font-size:13px}.upload-status.is-error{background:var(--color-error-bg);color:var(--color-error);border:1px solid rgba(239,68,68,.2)}.upload-status.is-success{background:var(--color-success-bg);color:var(--color-success);border:1px solid rgba(52,211,153,.2)}.showcase-cards{display:flex;gap:12px;padding:16px 20px}.showcase-mini-card{position:relative;width:120px;height:120px;flex-shrink:0}.mini-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:100%;height:100%;border:2px dashed var(--color-border);border-radius:var(--radius);cursor:pointer;color:var(--color-text-muted);transition:all .2s}.mini-placeholder:hover{border-color:var(--color-primary);color:var(--color-primary)}.mini-icon{font-size:24px;line-height:1}.mini-label{font-size:11px;text-align:center;line-height:1.3;padding:0 6px}.mini-selected{position:relative;width:100%;height:100%;border:2px solid var(--color-border);border-radius:var(--radius);overflow:hidden;cursor:pointer}.mini-cover{width:100%;height:100%;object-fit:cover}.mini-name{position:absolute;bottom:0;left:0;right:0;padding:4px 6px;font-size:11px;color:#fff;background:linear-gradient(transparent,#000000b3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:#00000080;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .2s}.mini-selected:hover .mini-remove{opacity:1}.showcase-mini-card.card-active .mini-selected,.showcase-mini-card.card-active .mini-placeholder{border-color:var(--color-primary)}.showcase-mini-card.card-active .mini-selected{box-shadow:0 0 0 1px var(--color-primary)}.showcase-hint{font-size:12px;color:var(--color-text-muted);line-height:1.4;margin-bottom:6px}.album-expand{padding:0 20px 12px}.album-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:4px;margin-bottom:8px}.album-thumb-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm)}.album-meta{font-size:12px;color:var(--color-text-muted)}.showcase-fallback-hint{text-align:center;font-size:13px;color:var(--color-text-muted);padding:8px 20px}.showcase-interval{display:flex;align-items:center;gap:8px;padding:8px 20px}.showcase-interval label{font-size:14px;color:var(--color-text)}.interval-input{width:80px;padding:6px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:14px;text-align:center}.interval-input:disabled{opacity:.4}.interval-unit{font-size:14px;color:var(--color-text-muted)}.showcase-actions{padding:8px 20px 12px;text-align:center}.showcase-actions .btn-primary,.showcase-actions .btn-danger{width:auto;min-width:180px;padding:10px 32px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-box{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);width:90%;max-width:560px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:16px;font-weight:600;color:var(--color-text)}.modal-body{padding:16px 20px;overflow-y:auto}.album-modal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.album-modal-item{cursor:pointer;border-radius:var(--radius);border:2px solid transparent;transition:all .2s;padding:4px}.album-modal-item:hover{border-color:var(--color-primary)}.album-modal-cover{aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:#ffffff08;margin-bottom:6px}.album-modal-cover img{width:100%;height:100%;object-fit:cover}.album-modal-empty{display:block;width:100%;height:100%;background:#ffffff0d}.album-modal-name{font-size:13px;color:var(--color-text);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
