:root{color-scheme:dark;--bg:#07100e;--panel:#101c19;--line:#294039;--text:#f0f6f3;--muted:#98aaa4;--accent:#5de0a3;--danger:#ff8a8a;font-family:Inter,"Microsoft YaHei",system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 80% 0,#173c31 0,transparent 35%),var(--bg);color:var(--text)}button,input,select{font:inherit}.shell{width:min(1180px,calc(100% - 32px));margin:auto;padding:28px 0 64px}.topbar,.library-head,.dialog-head,.viewer-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.topbar{padding-bottom:36px}.topbar h1,.library-head h2,.hero h2{margin:0}.eyebrow{margin:0 0 6px;color:var(--accent);font-size:.72rem;font-weight:800;letter-spacing:.15em}.top-actions{display:flex;align-items:center;gap:10px}.panel,.asset-card,dialog{border:1px solid var(--line);background:rgba(16,28,25,.96);box-shadow:0 24px 70px #0006}.auth-layout{min-height:65vh;display:grid;grid-template-columns:1.3fr .8fr;gap:48px;align-items:center}.hero h2{max-width:720px;font-size:clamp(2.5rem,6vw,5.5rem);line-height:.97}.hero p:last-child{max-width:620px;color:var(--muted);font-size:1.1rem;line-height:1.7}.auth-card,.dialog-body{display:grid;gap:18px;padding:28px;border-radius:20px}label{display:grid;gap:8px;color:var(--muted);font-size:.9rem}input,select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#091310;color:var(--text);outline:none}input:focus,select:focus{border-color:var(--accent)}button{border:0;border-radius:10px;padding:11px 18px;background:var(--accent);color:#052217;font-weight:800;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#182824;color:var(--text);border:1px solid var(--line)}.icon-button{padding:4px 12px;background:transparent;color:var(--text);font-size:2rem}.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-top:16px}.asset-card{overflow:hidden;border-radius:16px;cursor:pointer;transition:.18s transform,.18s border-color}.asset-card:hover{transform:translateY(-2px);border-color:#4d766a}.thumb{display:grid;place-items:center;aspect-ratio:16/10;background:#07100e;color:var(--muted);overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover}.asset-info{padding:14px}.asset-name{margin:0 0 9px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:.78rem}.badge{padding:3px 7px;border-radius:999px;background:#1a302a;color:var(--accent)}.message{min-height:1.4em;color:var(--muted)}.message.error{color:var(--danger)}.empty{padding:80px 20px;text-align:center;color:var(--muted)}dialog{width:min(560px,calc(100% - 24px));padding:0;border-radius:20px;color:var(--text)}dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}progress{width:100%;height:12px;accent-color:var(--accent)}.viewer-dialog{width:min(1100px,calc(100% - 24px));overflow:hidden}.viewer-head{padding:18px 22px}.viewer-head h2,.viewer-head p{margin:0}.viewer-head p{margin-top:5px;color:var(--muted)}.viewer-shell{position:relative;background:#020403}.viewer-stage{display:grid;place-items:center;min-height:60vh;background:#020403;overflow:hidden}.viewer-stage img,.viewer-stage video{display:block;max-width:100%;max-height:75vh}.panorama-canvas{display:block;width:100%;height:min(68vh,720px);min-height:420px;cursor:grab;touch-action:none;background:#020403}.panorama-canvas.dragging{cursor:grabbing}.panorama-source{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.viewer-hud{position:absolute;left:0;right:0;bottom:0;padding:40px 18px 14px;background:linear-gradient(transparent,#000d);transition:opacity .2s}.viewer-shell.hud-hidden .viewer-hud{opacity:0;pointer-events:none}.timeline-row,.viewer-options{display:flex;align-items:center;gap:10px}.timeline-row{font-size:.78rem;font-variant-numeric:tabular-nums}.timeline{flex:1;padding:0;border:0;accent-color:var(--accent)}.viewer-options{justify-content:flex-end;margin-top:10px}.viewer-options label{display:flex;grid-template-columns:none;align-items:center;gap:7px}.viewer-options select{width:auto;padding:7px 9px}.viewer-options input{width:110px;padding:0}.viewer-button{padding:7px 11px;background:#183129;color:var(--text);border:1px solid #ffffff24}.buffer-status{min-width:7em;color:var(--muted)}.viewer-status{position:absolute;top:10px;left:14px;right:14px;margin:0;color:#ffdb91;text-shadow:0 1px 4px #000;pointer-events:none}.projection-confirm{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px;padding:14px 20px;border-top:1px solid var(--line);color:var(--muted)}.hidden{display:none!important}.viewer-shell:fullscreen{width:100vw;height:100vh}.viewer-shell:fullscreen .viewer-stage,.viewer-shell:fullscreen .panorama-canvas{height:100vh;min-height:100vh}.viewer-dialog.native-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;max-width:none;max-height:none;margin:0;border:0;border-radius:0}.viewer-dialog.native-fullscreen .viewer-shell,.viewer-dialog.native-fullscreen .viewer-stage,.viewer-dialog.native-fullscreen .panorama-canvas{height:calc(100vh - 82px);min-height:calc(100vh - 82px)}@media(max-width:760px){.shell{width:min(100% - 20px,1180px);padding-top:18px}.topbar{align-items:flex-start}.auth-layout{grid-template-columns:1fr;gap:28px}.hero h2{font-size:2.7rem}.asset-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.asset-info{padding:10px}.top-actions #userLabel{display:none}.viewer-dialog{width:100%;height:100%;max-height:none;margin:0;border:0;border-radius:0}.viewer-head{padding:10px 14px}.viewer-head h2{font-size:1rem}.viewer-stage{min-height:calc(100vh - 72px)}.panorama-canvas{height:calc(100vh - 72px);min-height:calc(100vh - 72px)}.viewer-hud{padding:44px 10px 10px}.viewer-options{justify-content:space-between}.viewer-options label:last-of-type{display:none}.buffer-status{display:none}}

.account-menu-wrap{position:relative}
.account-button{display:flex;align-items:center;gap:8px;padding:5px 8px 5px 5px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--text)}
.account-button:hover,.account-button[aria-expanded="true"]{background:#0e1a16;border-color:var(--line)}
.account-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#1b3a30;color:var(--accent);font-size:.8rem;font-weight:800}
.account-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.82rem;font-weight:600}
.account-chevron{color:var(--muted);font-size:.75rem}
.account-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;display:grid;min-width:176px;padding:6px;border:1px solid var(--line);border-radius:12px;background:#0f1e19f5;box-shadow:0 18px 50px #000a;backdrop-filter:blur(14px)}
.menu-item{width:100%;padding:9px 10px;border-radius:8px;background:transparent;color:var(--text);font-size:.84rem;font-weight:600;text-align:left}
.menu-item:hover{background:#1a302a}
.viewer-download{display:inline-flex;align-items:center;text-decoration:none;white-space:nowrap}
.selection-summary{display:none;align-items:center;gap:8px;margin-top:4px;color:var(--muted);font-size:.82rem}
.selection-summary strong{color:var(--text);font-size:1rem;font-variant-numeric:tabular-nums}
.text-button{padding:4px 6px;border-radius:7px;background:transparent;border:0;color:var(--accent);font-size:.78rem;font-weight:700}
.text-button:hover{background:#1a302a}
.text-button.muted{color:var(--muted)}
body.selection-mode .selection-summary{display:flex}
body.selection-mode #libraryTitle,body.selection-mode #usageLabel,body.selection-mode #selectModeButton,body.selection-mode #openUploadButton{display:none}
body.selection-mode .shell{padding-bottom:132px}
.batch-bar{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:4px;padding:7px 8px 7px 14px;border:1px solid #3a5c50;border-radius:13px;background:#0f1e19f2;box-shadow:0 18px 50px #000a;backdrop-filter:blur(16px)}
.batch-count{color:var(--muted);font-size:.8rem;white-space:nowrap}
.batch-count b{color:var(--text);font-size:.92rem}
.batch-actions{display:flex;align-items:center;gap:2px}
.batch-bar button{padding:8px 10px;border-radius:8px;background:transparent;color:var(--text);font-size:.78rem;font-weight:650}
.batch-bar button:hover{background:#1a302a}
.batch-bar .danger-button{background:transparent;color:#ffb1b1;border:0}
.batch-bar .danger-button:hover{background:#3b2020}
.batch-bar .batch-cancel{padding:8px;color:var(--muted)}
.batch-bar .batch-cancel:hover{color:var(--text)}
.toast{position:fixed;left:50%;bottom:86px;transform:translateX(-50%);z-index:70;max-width:min(520px,calc(100vw - 24px));padding:10px 14px;border:1px solid #3a5c50;border-radius:10px;background:#0f1e19f5;box-shadow:0 14px 40px #000a;color:var(--text);font-size:.84rem;line-height:1.5;backdrop-filter:blur(12px)}
.toast.error{border-color:#6d3030;color:#ffb1b1}
.album-picker-list{display:grid;gap:7px;max-height:46vh;overflow:auto}
.album-picker-list button{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:#0c1714;color:var(--text);text-align:left;font-size:.86rem}
.album-picker-list button:hover{border-color:var(--accent);color:var(--accent)}
.confirm-message{margin:0;color:var(--muted);line-height:1.7}
.confirm-actions{display:flex;justify-content:flex-end;gap:8px}
.confirm-actions .danger-button{background:#3b2020;color:#ffb1b1;border:1px solid #6d3030}
.viewer-options{flex-wrap:wrap;justify-content:flex-end}
.viewer-options label{flex:0 0 auto;white-space:nowrap}
.viewer-options .viewer-button,.viewer-options .viewer-download{white-space:nowrap;flex:0 0 auto}

.menu-usage{margin:6px 8px 8px;color:var(--muted);font-size:.72rem;line-height:1.5}
.menu-usage:empty{display:none}

.viewer-head-actions{display:flex;align-items:center;gap:8px}
.viewer-download-wrap{position:relative}
.viewer-download-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:8;display:grid;min-width:140px;padding:5px;border:1px solid var(--line);border-radius:10px;background:#0f1e19f7;box-shadow:0 14px 40px #000a;backdrop-filter:blur(12px)}
.viewer-download-menu a{display:block;padding:9px 10px;border-radius:6px;color:var(--text);text-decoration:none;font-size:.82rem;white-space:nowrap}
.viewer-download-menu a:hover{background:#1a302a}
