:root{--color-bg:#eef2f7;--color-bg-soft:#f8fafc;--color-surface:#fff;--color-text:#1e293b;--color-text-muted:#64748b;--color-border:#e2e8f0;--color-primary:#1d4ed8;--color-primary-hover:#1e40af;--color-accent:#0f766e;--color-accent-soft:#ccfbf1;--color-danger:#dc2626;--color-danger-soft:#fef2f2;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 8px 24px #0f172a14;--shadow-lg:0 16px 40px #0f172a1f;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--nav-height:64px;--content-max:1120px;--font-sans:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-title:16px;--font-medium:500;--font-semibold:600;--btn-height:32px;--btn-padding-x:12px;--btn-font-size:13px;--accent-blue:#60a5fa;--accent-blue-soft:#eff6ff;--accent-blue-border:#bfdbfe;--accent-red:#f87171;--accent-red-hover:#ef4444;--accent-red-soft:#fef2f2;--accent-red-border:#fecaca}*{box-sizing:border-box}html{scrollbar-gutter:stable}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(180deg,#f8fafc,#eef2f7);background:linear-gradient(180deg,#f8fafc 0,var(--color-bg) 100%);color:#1e293b;color:var(--color-text);font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-family:var(--font-sans);margin:0;min-height:100vh}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{min-height:100vh}.content{margin:0 auto;max-width:var(--content-max);padding:20px 20px 40px}.main-area{margin-top:16px}p{text-indent:2em}.site-header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;border-bottom:1px solid var(--color-border);box-shadow:0 1px 0 #fffc,var(--shadow-sm);position:-webkit-sticky;position:sticky;top:0;z-index:100}nav.menu{align-items:center;display:flex;gap:20px;justify-content:space-between;margin:0 auto;max-width:var(--content-max);min-height:var(--nav-height);padding:0 20px}.site-brand{color:var(--color-text);flex-shrink:0;font-size:1.08rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}.site-brand span{color:var(--color-primary)}nav.menu ul{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-sm);box-shadow:inset 0 1px 2px #0f172a08;display:flex;flex-wrap:nowrap;gap:4px;list-style:none;margin:0;padding:5px}.nav-actions{gap:14px;justify-content:flex-end;margin-left:auto}.nav-actions,.nav-user{align-items:center;display:flex;flex-shrink:0;flex-wrap:nowrap}.nav-user{border-left:1px solid var(--color-border);gap:10px;padding-left:14px}.nav-username{max-width:140px;overflow:hidden;text-overflow:ellipsis}.nav-logout-btn,.nav-username{color:var(--color-text);font-size:.88rem;font-weight:600;white-space:nowrap}.nav-logout-btn{background:var(--color-bg-soft);border:1px solid var(--color-border);border-radius:999px;cursor:pointer;padding:8px 14px;transition:background .2s ease,border-color .2s ease,color .2s ease}.nav-logout-btn:hover{background:#fee2e2;border-color:#fecaca;color:#b91c1c}.nav-link--login{min-width:76px;white-space:nowrap}.nav-link--login-current{background:linear-gradient(135deg,#60a5fa,#7ec0ff);border-color:#0000;box-shadow:inset 0 1px 0 #ffffff59,0 2px 6px #60a5fa47;color:#fff;cursor:default;pointer-events:none}nav.menu ul li{flex-shrink:0;margin:0}.nav-link{align-items:center;border:1px solid #0000;border-radius:6px;box-sizing:border-box;color:var(--color-text-muted);display:inline-flex;font-size:.9rem;font-weight:600;height:36px;justify-content:center;line-height:1;min-width:76px;padding:0 14px;position:relative;text-decoration:none;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease;white-space:nowrap}nav.menu ul li:nth-child(3) .nav-link,nav.menu ul li:nth-child(4) .nav-link{min-width:92px}.nav-link:hover{background:#ffffffeb;color:#4b8df8;text-decoration:none}.nav-link.active{background:linear-gradient(135deg,#60a5fa,#7ec0ff);border-color:#0000;box-shadow:inset 0 1px 0 #ffffff59,0 2px 6px #60a5fa47;color:#fff}.page-shell{background:linear-gradient(180deg,#fff,#fafcff);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);min-height:700px;padding:26px 24px}.page-shell h2,.page-shell h3{color:var(--color-text);font-size:var(--text-title);font-weight:var(--font-medium);letter-spacing:0;margin:0 0 10px}.page-shell p{color:#475569;font-size:var(--text-base);font-weight:400;line-height:1.7;margin:0 0 12px}.page-shell p:last-child{margin-bottom:0}.page-lead{color:var(--color-text-muted);font-size:var(--text-base);font-weight:400;margin-bottom:16px!important}.page-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.link-card{align-items:center;background:var(--accent-blue-soft);border:1px solid var(--accent-blue-border);border-radius:var(--radius-sm);color:#4b8df8;display:inline-flex;font-size:var(--text-sm);font-weight:var(--font-medium);gap:6px;padding:7px 14px;text-decoration:none;transition:background .2s ease,box-shadow .2s ease,color .2s ease}.link-card:hover{background:#dbeafe;box-shadow:var(--shadow-sm);color:#3b82f6;text-decoration:none}.error-page{text-align:center}.error-page-code{color:var(--accent-blue);font-size:2.5rem;font-weight:var(--font-semibold);letter-spacing:.04em;line-height:1;margin:0 0 8px}.error-page-path{color:var(--color-text-muted);font-size:var(--text-sm);margin:0 0 20px;word-break:break-all}.error-page .page-actions{justify-content:center}.error-page .btn-secondary{margin:0}.link-inline{border-bottom:1px dashed #93c5fd;color:#4b8df8;font-weight:var(--font-medium);text-decoration:none}.link-inline:hover{border-bottom-color:#60a5fa;color:#3b82f6}.firmware-upload{background:#f8fafcb3;border:1px dashed var(--color-border);border-radius:var(--radius-sm);margin:8px 0 4px;padding:14px 16px}.firmware-upload__input{display:none}.firmware-upload__actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.firmware-upload__btn{align-items:center;background:var(--accent-blue-soft);border:1px solid var(--accent-blue-border);border-radius:6px;color:#4b8df8;cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);gap:6px;min-height:32px;padding:0 14px;transition:background .2s ease,border-color .2s ease}.firmware-upload__btn:hover:not(:disabled){background:#dbeafe;border-color:#93c5fd}.firmware-upload__btn:disabled{cursor:wait;opacity:.7}.firmware-upload__hint{color:var(--color-text-muted);font-size:var(--text-xs)}.firmware-upload__hint a{color:#4b8df8;margin-left:4px;text-decoration:none}.firmware-upload__hint a:hover{text-decoration:underline}.firmware-upload__msg{font-size:var(--text-xs);line-height:1.5;margin:10px 0 0}.firmware-upload__msg--ok{color:#0f766e}.firmware-upload__msg--err{color:var(--color-danger)}.firmware-upload__list{border-top:1px solid var(--color-border);list-style:none;margin:12px 0 0;padding:0}.firmware-upload__list li{border-bottom:1px dashed #eef2f7;color:var(--color-text-muted);font-size:var(--text-xs);padding:10px 0}.firmware-upload__row,.firmware-upload__url-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.firmware-upload__url-row{margin-top:6px;padding-left:22px}.firmware-upload__url-label{background:#ecfdf5;border-radius:4px;color:#0f766e;flex-shrink:0;font-size:11px;font-weight:var(--font-medium);padding:2px 6px}.firmware-upload__url{color:#4b8df8;flex:1 1 200px;min-width:0;text-decoration:none;word-break:break-all}.firmware-upload__url:hover{text-decoration:underline}.firmware-upload__copy{background:#fff;border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-muted);cursor:pointer;flex-shrink:0;font-family:inherit;font-size:11px;padding:2px 8px}.firmware-upload__copy:hover{border-color:#93c5fd;color:#4b8df8}.firmware-upload__delete{align-items:center;background:#fff;border:1px solid #fecaca;border-radius:4px;color:#b91c1c;cursor:pointer;display:inline-flex;flex-shrink:0;font-family:inherit;font-size:11px;gap:4px;padding:2px 8px}.firmware-upload__delete:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5}.firmware-upload__delete:disabled{cursor:wait;opacity:.65}.firmware-upload__list li:last-child{border-bottom:none}.firmware-upload__list li i{color:#94a3b8}.firmware-upload__name{color:var(--color-text);font-weight:var(--font-medium);word-break:break-all}.firmware-upload__meta{margin-left:auto;white-space:nowrap}.btn{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-size:var(--btn-font-size);font-weight:var(--font-medium);gap:5px;justify-content:center;line-height:1.25;min-height:var(--btn-height);padding:0 var(--btn-padding-x);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.btn-compact{font-size:var(--text-xs);min-height:26px;padding:2px 10px}.btn-primary{background:linear-gradient(135deg,#60a5fa,#7ec0ff);box-shadow:0 2px 6px #60a5fa38;color:#fff}.btn-primary:hover{background:linear-gradient(135deg,#4b8df8,#60a5fa)}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);box-shadow:none;color:var(--color-text)}.btn-secondary:hover{background:var(--color-bg-soft);border-color:#cbd5e1}.btn-danger{background:#fff;border:1px solid #fecaca;box-shadow:none;color:#b91c1c}.btn-danger:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5;color:#991b1b}.btn-danger:disabled{cursor:not-allowed;opacity:.65}.gallery-subtitle .btn{margin-left:4px}.app-login .content{max-width:none;padding:0}.app-login .main-area{margin-top:0}.login-container{align-items:center;background:linear-gradient(155deg,#b8ede0,#ccfbf1 26%,#ecfdf5 50%,#e0f7fa 74%,#bae6e8);display:flex;justify-content:center;min-height:calc(100vh - var(--nav-height));overflow:hidden;padding:40px 20px;position:relative}.login-bg-layer{pointer-events:none;position:absolute}.login-bg-layer--mesh{background:radial-gradient(ellipse 90% 70% at 15% 15%,#2dd4bf52,#0000 58%),radial-gradient(ellipse 75% 55% at 85% 75%,#34d39938,#0000 52%),radial-gradient(ellipse 50% 40% at 60% 35%,#22d3ee33,#0000 48%);inset:0}.login-bg-layer--orb{border-radius:50%;filter:blur(48px);opacity:.85}.login-bg-layer--orb-1{background:#2dd4bf6b;height:340px;right:-40px;top:-80px;width:340px}.login-bg-layer--orb-2{background:#6ee7b77a;bottom:-60px;height:280px;left:-40px;width:280px}.login-bg-layer--orb-3{background:#22d3ee57;height:180px;left:12%;top:42%;width:180px}.login-bg-layer--grid{background-image:linear-gradient(#ffffff52 1px,#0000 0),linear-gradient(90deg,#ffffff52 1px,#0000 0);background-size:48px 48px;inset:0;-webkit-mask-image:radial-gradient(ellipse 85% 75% at 50% 45%,#000 20%,#0000 72%);mask-image:radial-gradient(ellipse 85% 75% at 50% 45%,#000 20%,#0000 72%);opacity:.4}.login-card{backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);background:#ffffffd1;border:1px solid #ffffffbf;border-radius:var(--radius-lg);box-shadow:0 28px 56px #0f172a1a,0 12px 24px #14b8a61f,inset 0 1px 0 #fffffff2;max-width:420px;padding:2rem 1.85rem 1.85rem;position:relative;width:100%;z-index:1}.login-card__header{margin-bottom:1.5rem;text-align:center}.login-card__logo{align-items:center;background:linear-gradient(145deg,#60a5fa,#7ec0ff);border-radius:14px;box-shadow:0 10px 20px #60a5fa59,inset 0 1px 0 #ffffff59;color:#fff;display:flex;font-size:1.35rem;height:52px;justify-content:center;margin:0 auto 14px;width:52px}.login-card h2{color:var(--color-text);font-size:1.25rem;font-weight:var(--font-medium);letter-spacing:.02em;margin:0 0 6px}.login-card h2 span{color:#4b8df8}.login-card__subtitle{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.login-form .form-group{margin-bottom:1rem}.login-form .form-group label{color:var(--color-text);display:block;font-size:var(--text-sm);font-weight:var(--font-medium);margin-bottom:.35rem}.login-input-wrap{position:relative}.login-input-wrap__icon{color:#94a3b8;font-size:.85rem;left:12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.login-form .form-group input,.login-input{background:#f8fafceb;border:1px solid #e2e8f0f2;border-radius:8px;font-size:var(--text-base);padding:.62rem .75rem .62rem 2.25rem;transition:border-color .2s,box-shadow .2s,background .2s;width:100%}.login-form .form-group input:focus,.login-input:focus{background:#fff;border-color:#93c5fd;box-shadow:0 0 0 3px #60a5fa1f;outline:none}.login-btn{align-items:center;background:linear-gradient(135deg,#60a5fa,#7ec0ff);border:none;border-radius:8px;box-shadow:0 8px 18px #60a5fa47,inset 0 1px 0 #ffffff40;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--text-sm);font-weight:var(--font-medium);gap:8px;justify-content:center;margin-top:.25rem;min-height:36px;padding:0 1rem;transition:background .2s,box-shadow .2s,transform .15s;width:100%}.login-btn:hover{background:linear-gradient(135deg,#4b8df8,#60a5fa);box-shadow:0 10px 22px #60a5fa52}.login-btn:active{transform:scale(.99)}.login-form .error-message{background:var(--color-danger-soft);border:1px solid #fecaca;border-radius:8px;color:var(--color-danger);font-size:var(--text-xs);line-height:1.5;margin-bottom:.85rem;padding:.6rem .75rem;text-align:center}.shop-page{min-height:520px}.shop-loading{padding-top:4rem}.shop-header{align-items:flex-start;background:linear-gradient(180deg,#fff,snow);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:16px;padding:16px 20px}.shop-header__title{align-items:center;color:var(--color-text);display:flex;font-size:var(--text-title);font-weight:var(--font-medium);gap:8px;margin:0 0 4px}.shop-header__title i{color:var(--accent-red)}.shop-header__desc{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.shop-header__count{align-items:center;background:var(--accent-red-soft);border:1px solid var(--accent-red-border);border-radius:6px;color:var(--accent-red-hover);display:inline-flex;font-size:var(--text-xs);font-weight:var(--font-medium);gap:6px;padding:5px 12px;white-space:nowrap}.shop-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.shop-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;overflow:hidden;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.shop-card:hover{border-color:#cbd5e1;box-shadow:var(--shadow-md);transform:translateY(-2px)}.shop-card__media{background:#f1f5f9;overflow:hidden;position:relative}.shop-card__cover{display:block;height:190px;object-fit:cover;transition:transform .35s ease;width:100%}.shop-card:hover .shop-card__cover{transform:scale(1.04)}.shop-card__badge{background:linear-gradient(135deg,#34d399,#6ee7b7);border-radius:4px;color:#fff;font-size:11px;font-weight:var(--font-medium);left:10px;padding:3px 8px;position:absolute;top:10px}.shop-card__body{display:flex;flex:1 1;flex-direction:column;padding:14px 16px 16px}.shop-card__title{color:var(--color-text);font-size:var(--text-base);font-weight:var(--font-medium);line-height:1.4;margin:0 0 8px}.shop-card__sku,.shop-card__spec{align-items:center;color:var(--color-text-muted);display:flex;font-size:var(--text-xs);gap:6px;margin:0 0 5px}.shop-card__sku i,.shop-card__spec i{color:#94a3b8;text-align:center;width:14px}.shop-card__footer{align-items:flex-end;border-top:1px dashed var(--color-border);display:flex;gap:12px;justify-content:space-between;margin-top:auto;padding-top:14px}.shop-card__price-label{color:var(--color-text-muted);display:block;font-size:.72rem;margin-bottom:2px}.shop-card__price-value{color:var(--color-danger);font-size:1.1rem;font-weight:var(--font-semibold);line-height:1}.shop-card__price-value small{font-size:var(--text-xs);margin-right:2px}.shop-card__actions{align-items:center;display:flex;gap:6px}.shop-btn{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-family:inherit;font-size:var(--text-xs);font-weight:var(--font-medium);gap:5px;justify-content:center;transition:background .15s ease,box-shadow .15s ease}.shop-btn:active{transform:scale(.98)}.shop-btn--primary{background:linear-gradient(135deg,#f87171,#fca5a5);box-shadow:0 2px 5px #f8717138;color:#fff;min-height:28px;padding:0 12px}.shop-btn--primary:hover{background:linear-gradient(135deg,#ef4444,#f87171)}.shop-btn--cart{background:var(--accent-red-soft);border:1px solid var(--accent-red-border);color:var(--accent-red-hover);height:28px;padding:0;width:28px}.shop-btn--cart:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.shop-empty{background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-muted);padding:64px 20px;text-align:center}.shop-empty__icon{color:#cbd5e1;font-size:2.5rem;margin-bottom:12px}.shop-notice-overlay{align-items:center;animation:shop-fade-in .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.shop-notice{animation:shop-slide-up .25s ease;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:28px 24px 22px;text-align:center;width:min(360px,100%)}.shop-notice__icon-wrap{align-items:center;background:var(--accent-red-soft);border-radius:50%;display:flex;height:52px;justify-content:center;margin:0 auto 14px;width:52px}.shop-notice__icon{color:var(--accent-red-hover);font-size:1.5rem}.shop-notice__title{color:var(--color-text);font-size:var(--text-md);font-weight:var(--font-medium);margin:0 0 8px}.shop-notice__text{color:var(--color-text-muted);font-size:var(--text-sm);margin:0 0 18px}.shop-notice__btn{min-width:100px}@keyframes shop-fade-in{0%{opacity:0}to{opacity:1}}@keyframes shop-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.shop-header{padding:14px 16px}.shop-card__footer{align-items:stretch;flex-direction:column}.shop-card__actions{justify-content:stretch}.shop-btn--primary{flex:1 1}}.bookwar{background:#0000}.app-header{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;justify-content:space-between;margin-bottom:1.5rem;padding:1.25rem 1.5rem}.logout-btn{background:var(--color-bg-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium);padding:.55rem 1rem;transition:all .2s}.logout-btn:hover{background:#fee2e2;border-color:#fecaca;color:#b91c1c}.loading{color:var(--color-text-muted);font-size:var(--text-base);font-weight:400;padding:3rem 1rem;text-align:center}.loading:after{animation:dots 1.2s steps(4) infinite;content:"";display:inline-block;width:1em}@keyframes dots{0%,20%{content:""}40%{content:"."}60%{content:".."}80%,to{content:"..."}}.App.app-gallery:has(.gallery-page--images) nav.menu{max-width:none}.content.content--gallery:has(.gallery-page--images){max-width:none;padding:0;width:100%}.content.content--gallery:has(.gallery-page--images) .main-area{margin-top:0}.content.content--gallery:has(.gallery-page--images) .gallery-page{background:#f5f5f5;border:none;border-radius:0;box-shadow:none;max-width:none;min-height:calc(100vh - var(--nav-height));padding:0;width:100%}.content.content--gallery:has(.gallery-page--images) .gallery-header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;border-bottom:1px solid var(--color-border);margin-bottom:0;padding:12px 20px;position:-webkit-sticky;position:sticky;top:var(--nav-height);z-index:50}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact{padding:5px 16px;text-align:left}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact .gallery-header-bar{align-items:center;display:flex;flex-wrap:wrap;font-size:12px;gap:6px 12px;justify-content:flex-start;line-height:1.25}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact .gallery-header-summary{color:var(--color-text);flex:1 1 auto;min-width:0}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact .gallery-header-actions{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:6px;justify-content:flex-start;margin:0}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact .btn-compact{font-size:12px;line-height:1.25;min-height:0;padding:2px 8px}.content.content--gallery:has(.gallery-page--images) .gallery-header h1{font-size:var(--text-title);font-weight:var(--font-medium);margin-bottom:.5rem}.content.content--gallery:has(.gallery-page--images) .gallery-empty,.content.content--gallery:has(.gallery-page--images) .gallery-error,.content.content--gallery:has(.gallery-page--images) .loading{margin:16px 20px}.content.content--gallery:has(.gallery-page--images) .gallery-grid{padding:16px 20px 32px;width:100%}.content.content--gallery:has(.gallery-page--images) .gallery-native.gallery-page--images .gallery-grid--images,.content.content--gallery:has(.gallery-page--images) .gallery-virtual-grid{padding:16px 20px 40px}.gallery-page--devices .gallery-error{margin-bottom:1rem}.gallery-page--devices.page-shell{min-height:700px;padding:14px 20px 18px}.gallery-page--devices .gallery-devices-heading{color:var(--color-text);font-size:14px;font-weight:400;line-height:1.25;margin:0 0 8px}.device-list-card{box-sizing:border-box;padding:0;width:100%}.device-list-hint{margin:0 0 12px}.device-list-hint,.device-list-hint2,.device-list-hint3{color:var(--color-text-muted);font-size:var(--text-base)}.device-list-hint3{margin-left:20px}.device-list-filters{align-items:flex-end;display:flex;flex-wrap:wrap;gap:12px;margin:0 0 16px}.device-list-filters--inline{align-items:center;flex-wrap:nowrap;font-size:12px;gap:8px;line-height:1.25;margin:0 0 10px}.device-list-filters--inline .device-page-size-field,.device-list-filters--inline .device-search-field{align-items:center;flex-direction:row;gap:6px}.device-list-filters--inline .device-search-field{flex:1 1 auto;min-width:0}.device-list-filters--inline .device-page-size-field{flex:0 0 auto}.device-list-filters--inline .device-search-label{font-size:var(--text-xs);font-weight:var(--font-medium);white-space:nowrap}.device-list-filters--inline .device-search-input{flex:1 1 160px;font-size:12px;height:26px;max-width:240px;min-width:100px;padding:0 8px;width:auto}.device-list-filters--inline .device-page-size-select{font-size:12px;height:26px;min-width:90px;padding:0 6px}.device-list-filters--inline .device-sort-btn--compact{font-size:12px;line-height:1.25;padding:2px 8px}.device-page-size-field,.device-search-field{display:flex;flex-direction:column;gap:6px}.device-search-field{flex:1 1 280px;min-width:220px}.device-page-size-field{flex:0 0 auto}.device-search-label{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:var(--font-medium)}.device-page-size-select,.device-search-input{background:#fff;border:1px solid var(--color-border);border-radius:6px;box-sizing:border-box;color:var(--color-text);font-size:var(--text-sm);height:32px;padding:0 10px}.device-search-input{min-width:500px;width:50%}.device-page-size-select:focus,.device-search-input:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #60a5fa1f;outline:none}.device-page-size-select{cursor:pointer;min-width:120px}.device-list-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}.device-sort-active{background:linear-gradient(135deg,#60a5fa,#7ec0ff);color:#fff}.device-link-btn,.device-pager-btn,.device-sort-active,.device-sort-btn{border-radius:6px;display:inline-block;font-size:var(--text-sm);font-weight:var(--font-medium);padding:4px 12px}.device-link-btn,.device-pager-btn,.device-sort-btn{background:var(--accent-blue-soft);border:1px solid var(--accent-blue-border);color:#4b8df8;cursor:pointer;text-decoration:none;transition:background .2s ease,color .2s ease,border-color .2s ease}.device-link-btn:hover,.device-pager-btn:hover,.device-sort-btn:hover{background:#dbeafe;color:#3b82f6}.device-list-table-wrap{background:#fff;border-radius:8px;box-shadow:0 1px 3px #00000014;overflow-x:auto}.device-list-table{border-collapse:collapse;font-size:12px;min-width:780px;width:100%}.device-list-table td,.device-list-table th{border-bottom:1px solid #eee;line-height:1.35;padding:6px 12px;text-align:left;vertical-align:middle}.device-list-table th{background:#f8fafc;color:#475569;font-size:var(--text-xs);font-weight:var(--font-medium);padding:7px 12px}.device-list-table tbody tr:hover{background:#f8fbff}.device-list-table tbody tr:last-child td{border-bottom:none}.device-list-code{color:#0f766e;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}.device-link{color:#4b8df8;font-size:var(--text-xs);font-weight:var(--font-medium);text-decoration:none}.device-link:hover{text-decoration:underline}.device-link-btn{font-size:12px;font-weight:500;line-height:1.35;padding:3px 10px}.device-list-muted{color:#999}.device-list-pager{align-items:center;color:#555;display:flex;flex-wrap:wrap;font-size:14px;gap:6px;margin:20px 0 8px}.device-pager-summary{color:#666;margin-right:12px}.device-pager-current{background:linear-gradient(135deg,#60a5fa,#7ec0ff);color:#fff;font-weight:var(--font-medium)}.device-pager-current,.device-pager-disabled{border-radius:6px;display:inline-block;font-size:var(--text-sm);padding:4px 12px}.device-pager-disabled{background:#f1f5f9;border:1px solid var(--color-border);color:#94a3b8}.gallery-virtual-grid{display:block}.gallery-virtual-grid__inner{position:relative;width:100%}.gallery-virtual-row{box-sizing:border-box}.gallery-page{background:linear-gradient(180deg,#fff,#fafcff);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:22px 20px 28px}.gallery-header{border-bottom:1px solid var(--color-border);margin-bottom:1.25rem;padding-bottom:.85rem;text-align:center}.gallery-header h1{color:var(--color-text);font-size:var(--text-title);font-weight:var(--font-medium);margin:0 0 .5rem}.gallery-subtitle{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:400;margin:0 0 10px}.gallery-header-actions,.gallery-subtitle{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.gallery-header-actions .btn{margin:0}.gallery-error{background:var(--color-danger-soft);border:1px solid #fecaca;border-radius:var(--radius-sm);color:var(--color-danger);margin-bottom:1rem;padding:1rem 1.25rem;text-align:center}.gallery-empty{background:var(--color-bg-soft);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);padding:3rem 1rem;text-align:center}.gallery-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.gallery-native.gallery-page--images .gallery-grid--images{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;grid-template-columns:none;justify-content:flex-start}.gallery-native.gallery-page--images .gallery-card--image{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:0;max-width:none;overflow:visible;transition:box-shadow .2s ease;width:auto}.gallery-native.gallery-page--images .gallery-card--image:hover{border-color:#ddd;box-shadow:0 4px 8px #00000026;transform:none}.gallery-native .gallery-image-link{display:block;line-height:0}.gallery-native .gallery-image-frame{aspect-ratio:unset;background:#0000;border:none;display:block;height:auto;margin:0;max-width:none;width:auto}.gallery-native .gallery-card--image .gallery-info{padding:8px 0 0}.gallery-native .gallery-card--image .gallery-filename{color:#666;font-size:12px;font-weight:400;margin:0;text-align:center;white-space:normal;word-break:break-all}.gallery-native .gallery-card--image .gallery-meta--native{color:#999;display:block;font-size:12px;line-height:1.5;margin:6px 0 0;text-align:center}.gallery-eink-native.gallery-page--images .gallery-card--image{padding:12px;width:270px}.gallery-eink-native .gallery-image{background:#fafafa;border:1px solid #eee;height:360px;image-rendering:pixelated;image-rendering:crisp-edges;max-width:100%;object-fit:contain;width:270px}.gallery-curved-native.gallery-page--images .gallery-card--image{border:1px solid #ddd;padding:10px;width:260px}.gallery-curved-native .gallery-image{background:#fafafa;border:1px solid #eee;height:352px;image-rendering:pixelated;image-rendering:crisp-edges;max-width:100%;object-fit:contain;width:260px}.gallery-curved-native .gallery-card--image .gallery-meta--native{font-size:10px}.gallery-oled-native.gallery-page--images .gallery-card--image{padding:10px}.gallery-oled-native .gallery-card--image .gallery-filename{color:#7f7f9f}.gallery-oled-native .gallery-image{background:#0000;border:1px solid #eee;height:128px;image-rendering:pixelated;image-rendering:crisp-edges;max-height:none;max-width:none;object-fit:fill;width:256px}.gallery-oled-native .gallery-card--image .gallery-meta--native{color:#7f7f9f}.gallery-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}.gallery-card:hover{border-color:#bfdbfe;box-shadow:var(--shadow-md);transform:translateY(-4px)}.gallery-card--image{margin:0 auto;max-width:320px;max-width:var(--panel-max-width,320px);width:100%}.gallery-device-card{background:linear-gradient(180deg,#fff,#f8fafc);cursor:pointer;padding:0;text-align:left;width:100%}.gallery-device-card .gallery-info{padding:1rem 1.1rem}.gallery-device-card .gallery-filename{color:var(--color-accent);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:var(--text-sm);font-weight:var(--font-medium)}.gallery-iccid-link{color:#4b8df8;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:var(--text-xs);text-decoration:none;word-break:break-all}.gallery-iccid-link:hover{color:#3b82f6;text-decoration:underline}.gallery-image-link{display:block}.gallery-image-link,.gallery-image-link:hover{text-decoration:none}.gallery-image-frame{align-items:center;aspect-ratio:4/3;aspect-ratio:var(--panel-aspect,4/3);background:linear-gradient(165deg,#0f172a,#1e293b);border-bottom:1px solid #334155;display:flex;justify-content:center;margin:0 auto;max-width:100%;max-width:var(--panel-max-width,100%);overflow:hidden;width:100%}.gallery-image{background:#0000;display:block;height:100%;image-rendering:auto;max-height:100%;max-width:100%;object-fit:contain;object-position:center;width:100%}.gallery-card--image .gallery-info{padding:.85rem 1rem 1rem}.gallery-info{padding:1rem 1.15rem 1.15rem}.gallery-filename{color:var(--color-text);font-size:var(--text-sm);font-weight:var(--font-medium);margin:0 0 .45rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery-meta{color:var(--color-text-muted);font-size:var(--text-xs);line-height:1.6;margin:0}.gallery-page--images:not(.gallery-native) .gallery-grid--images{align-items:start;gap:1.5rem;justify-content:center}.contact-list{list-style:none;margin:16px 0 0;padding:0}.contact-list li{border-bottom:1px solid var(--color-border);color:#334155;display:flex;gap:12px;padding:12px 0}.contact-list li:last-child{border-bottom:none}.contact-label{color:var(--color-text-muted);font-weight:var(--font-medium);min-width:72px}@media (max-width:768px){.content{padding:16px 14px 32px}nav.menu{gap:12px;min-height:auto;padding:14px}.nav-actions,nav.menu{align-items:stretch;flex-direction:column}.nav-actions{flex-wrap:wrap;margin-left:0}nav.menu ul{border-radius:var(--radius-sm);flex-wrap:wrap;justify-content:center;padding:6px}.nav-link{font-size:.86rem;height:34px;min-width:68px;padding:0 12px}.nav-user{border-left:none;border-top:1px solid var(--color-border);justify-content:center;padding-left:0;padding-top:8px}.page-shell{padding:24px 18px}.gallery-page{padding:20px 16px 24px}.content.content--gallery:has(.gallery-page--images) .gallery-header{padding:10px 14px}.content.content--gallery:has(.gallery-page--images) .gallery-header--compact{padding:4px 12px}.content.content--gallery:has(.gallery-page--images) .gallery-grid,.content.content--gallery:has(.gallery-page--images) .gallery-native.gallery-page--images .gallery-grid--images,.content.content--gallery:has(.gallery-page--images) .gallery-virtual-grid{padding:12px 14px 28px}.device-list-toolbar{gap:8px}.device-list-filters{align-items:stretch;flex-direction:column}.device-list-filters--inline{align-items:center;flex-direction:row;flex-wrap:wrap}.device-list-filters--inline .device-search-input{flex:1 1 140px;max-width:none;min-width:0}.device-page-size-field,.device-page-size-select{width:100%}.device-list-hint3{margin-left:0}.device-list-pager{justify-content:center}.gallery-native.gallery-page--images .gallery-grid--images{justify-content:flex-start}.gallery-eink-native .gallery-image{aspect-ratio:270/360;height:auto;width:min(270px,calc(100vw - 64px))}.gallery-eink-native.gallery-page--images .gallery-card--image{width:min(270px,calc(100vw - 64px))}.gallery-curved-native .gallery-image{aspect-ratio:260/352;height:auto;width:min(260px,calc(100vw - 64px))}.gallery-curved-native.gallery-page--images .gallery-card--image{width:min(260px,calc(100vw - 64px))}.gallery-oled-native .gallery-image{aspect-ratio:2/1;height:auto;width:min(256px,calc(100vw - 80px))}.gallery-card--image{max-width:100%}}
/*# sourceMappingURL=main.eae04e01.css.map*/