:root{--bg-dark:#0b192c;--bg-panel:#0f2035d9;--bg-glass:#ffffff14;--border-glass:#ffffff26;--accent-cyan:#00f2fe;--accent-blue:#4facfe;--accent-pink:#ff0844;--accent-gold:#ffb300;--accent-green:#00e676;--text-main:#f0f6fc;--text-muted:#f0f6fca6;--radius-lg:16px;--radius-md:12px;--radius-sm:8px;--shadow-lg:0 16px 32px #0006;--shadow-glow:0 0 20px #00f2fe4d}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);width:100vw;height:100vh;font-family:Outfit,Noto Sans TC,-apple-system,BlinkMacSystemFont,sans-serif;overflow:hidden}#root{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.glass-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);box-shadow:var(--shadow-lg)}.glass-card{background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:var(--radius-md);transition:all .2s}.glass-card:hover{border-color:var(--accent-cyan);background:#ffffff24;transform:translateY(-2px)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#0003;border-radius:4px}::-webkit-scrollbar-thumb{background:#00f2fe4d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-cyan)}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.95rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--accent-blue), var(--accent-cyan));color:#041226;box-shadow:0 4px 15px #00f2fe4d}.btn-primary:hover{filter:brightness(1.1);transform:scale(1.03)}.btn-primary:active{transform:scale(.98)}.btn-gold{color:#1a0f00;background:linear-gradient(135deg,#ffb300,#ff8f00);box-shadow:0 4px 15px #ffb3004d}.btn-gold:hover{filter:brightness(1.1);transform:scale(1.03)}.btn-secondary{color:var(--text-main);border:1px solid var(--border-glass);background:#ffffff1f}.btn-secondary:hover{background:#ffffff38}.btn-danger{color:#fff;background:linear-gradient(135deg,#ff4d4f,#ff0844)}.btn-icon{border-radius:50%;width:42px;height:42px;padding:0}.progress-bar-track{background:#0006;border-radius:4px;width:100%;height:8px;overflow:hidden}.progress-bar-fill{border-radius:4px;height:100%;transition:width .3s}.fill-cyan{background:linear-gradient(90deg,#00f2fe,#4facfe)}.fill-green{background:linear-gradient(90deg,#00e676,#69f0ae)}.fill-gold{background:linear-gradient(90deg,#ffb300,#ffd54f)}.fill-pink{background:linear-gradient(90deg,#ff0844,#ff4081)}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulseGlow{0%{box-shadow:0 0 5px #00f2fe4d}50%{box-shadow:0 0 20px #00f2fecc}to{box-shadow:0 0 5px #00f2fe4d}}.animate-fade-in{animation:.25s cubic-bezier(.16,1,.3,1) forwards fadeIn}.animate-glow{animation:2s infinite pulseGlow}.toast-notification{z-index:999;border:1px solid var(--accent-cyan);color:#fff;pointer-events:none;background:#0a192ff2;border-radius:30px;align-items:center;gap:8px;padding:12px 24px;font-weight:600;display:flex;position:fixed;bottom:80px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000080}.aquarium-viewport{isolation:isolate;background:#071b35;flex:1;width:100%;height:100%;min-height:0;position:relative;overflow:hidden}.aquarium-webgl-stage{z-index:1;position:absolute;inset:0}.aquarium-webgl-stage canvas{cursor:pointer;touch-action:none;width:100%;height:100%;display:block}.three-status-badge{z-index:20;color:#dcfbffd1;letter-spacing:.08em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;background:#051424ad;border:1px solid #68eeff4d;border-radius:999px;align-items:center;gap:7px;padding:6px 10px;font-size:.68rem;font-weight:700;display:flex;position:absolute;top:14px;right:16px}.three-status-dot{background:#59f6c6;border-radius:50%;width:7px;height:7px;box-shadow:0 0 10px #59f6c6}.asset-warning{z-index:45;color:#ffe0a0;background:#362108e6;border:1px solid #ffbf477a;border-radius:10px;max-width:340px;padding:8px 12px;font-size:.76rem;position:absolute;top:50px;right:16px;box-shadow:0 10px 30px #00000052}.cleaning-water-overlay{z-index:30;pointer-events:none;background:radial-gradient(circle,#00f2fe57 0%,#0000 76%);animation:.55s ease-in-out infinite alternate cleanWaterPulse;position:absolute;inset:0}@keyframes cleanWaterPulse{0%{opacity:.45}to{opacity:1}}.fish-3d-label{white-space:nowrap;color:#f2fdff;background:#041424d1;border:1px solid #5af4ff80;border-radius:999px;padding:3px 8px;font-family:Noto Sans TC,sans-serif;font-size:12px;font-weight:700;display:block;box-shadow:0 5px 18px #00000057,0 0 12px #5af4ff2e}.fish-info-card{z-index:40;border-radius:var(--radius-md);width:min(288px,100vw - 36px);padding:16px;position:absolute;top:18px;left:18px}.fish-info-heading,.fish-info-identity,.fish-stat-label,.fish-growth-row{justify-content:space-between;align-items:center;display:flex}.fish-info-heading{margin-bottom:11px}.fish-info-identity{justify-content:flex-start;gap:9px;min-width:0}.fish-info-identity h3{text-overflow:ellipsis;white-space:nowrap;max-width:174px;font-size:1rem;font-weight:700;overflow:hidden}.fish-info-icon{font-size:1.4rem}.fish-info-species{color:var(--text-muted);font-size:.72rem}.fish-info-close{flex:none;width:28px;height:28px}.fish-stat-list{flex-direction:column;gap:8px;margin-bottom:14px;font-size:.8rem;display:flex}.fish-stat-label{margin-bottom:3px}.fish-growth-row{border-top:1px solid var(--border-glass);padding-top:6px}.fish-growth-row span:last-child{color:var(--accent-cyan);font-weight:700}.fish-card-actions{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.fish-card-actions .btn{padding:7px 5px;font-size:.72rem}.fish-card-actions .fish-feed-action{grid-column:1/-1}.aquarium-toolbar{z-index:40;scrollbar-width:none;border-radius:30px;align-items:center;gap:10px;max-width:calc(100vw - 24px);padding:9px 16px;display:flex;position:absolute;bottom:18px;left:50%;overflow-x:auto;transform:translate(-50%)}.aquarium-toolbar::-webkit-scrollbar{display:none}.aquarium-toolbar .btn{flex:none;padding:9px 14px}.toolbar-divider{background:var(--border-glass);flex:none;width:1px;height:24px}.fish-photo-card{overflow:hidden}.fish-photo-with-badge{margin-bottom:12px;position:relative}.fish-species-photo{aspect-ratio:16/9;background:#071522;border:1px solid #7cd2ff38;border-radius:10px;width:100%;position:relative;overflow:hidden;box-shadow:inset 0 0 24px #00000052}.fish-species-photo img{object-fit:cover;width:100%;height:100%;transition:transform .22s,filter .22s;display:block}.fish-photo-card:hover .fish-species-photo:not(.fish-species-photo-hidden) img{transform:scale(1.025)}.fish-photo-credit{color:#ffffffd6;text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000094;border-radius:4px;max-width:calc(100% - 12px);padding:2px 6px;font-size:.56rem;line-height:1.25;text-decoration:none;position:absolute;bottom:5px;left:6px;overflow:hidden}a.fish-photo-credit:hover{color:#fff;text-decoration:underline}.fish-card-photo-badge{z-index:2;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid #ffffff21;border-radius:999px;padding:3px 9px;font-size:.68rem;font-weight:700;position:absolute;top:8px;right:8px;box-shadow:0 3px 10px #00000047}.fish-card-description{min-height:2.8em;color:var(--text-muted);margin:-4px 0 12px;font-size:.74rem;line-height:1.45}.fish-info-description{max-width:220px;color:var(--text-muted);margin-top:4px;font-size:.72rem;line-height:1.4}.fish-species-photo-hidden img{filter:grayscale()brightness(.42)blur(8px);transform:scale(1.08)}.fish-photo-question{color:#fffc;text-shadow:0 3px 12px #000c;place-items:center;font-size:2.4rem;font-weight:800;display:grid;position:absolute;inset:0}.webgl-fallback{color:#d8f9ff;text-align:center;background:radial-gradient(circle at 50% 30%,#134b61,#07182b 72%);place-items:center;padding:28px;display:grid;position:absolute;inset:0}.aquarium-region-nav{z-index:12;align-items:center;gap:6px;max-width:min(760px,100vw - 160px);padding:7px;display:flex;position:absolute;top:12px;left:50%;overflow-x:auto;transform:translate(-50%)}.aquarium-region-nav .btn{white-space:nowrap;padding:6px 9px;font-size:.72rem}.aquarium-minimap-shell{z-index:14;position:absolute;bottom:84px;right:12px}.aquarium-minimap-toggle{padding:7px 10px;font-size:.75rem}.aquarium-minimap{padding:9px}.aquarium-minimap-head{justify-content:space-between;align-items:center;margin-bottom:7px;font-size:.75rem;display:flex}.aquarium-minimap-head strong{align-items:center;gap:5px;display:flex}.aquarium-minimap-head .btn{width:24px;height:24px;padding:0}.aquarium-minimap-map{cursor:pointer;background:linear-gradient(#1c819e66,#072a48e0);border:1px solid #87e8ff57;border-radius:7px;width:100%;height:70px;display:block;position:relative;overflow:hidden}.aquarium-minimap-region{color:#ebfdffcc;white-space:nowrap;border-right:1px solid #cdfbff47;place-items:center;font-size:.58rem;display:grid;position:absolute;top:0;bottom:0;overflow:hidden}.aquarium-minimap-fish{background:#ffe673;border-radius:50%;width:4px;height:4px;position:absolute;top:46%;box-shadow:0 0 5px #ffe673}.aquarium-minimap-view{pointer-events:none;background:#50e8ff1f;border:1px solid #71f8ff;border-radius:3px;position:absolute;top:8px;bottom:8px}.aquarium-minimap-status{color:var(--text-muted);margin-top:6px;font-size:.66rem}@media (width<=760px){.three-status-badge{padding:5px 8px;font-size:.6rem;top:8px;right:8px}.fish-info-card{width:min(264px,100vw - 16px);padding:12px;top:8px;left:8px}.fish-info-identity h3{max-width:145px}.asset-warning{max-width:calc(100vw - 16px);top:40px;right:8px}.aquarium-toolbar{bottom:max(8px, env(safe-area-inset-bottom));border-radius:22px;gap:7px;max-width:calc(100vw - 12px);padding:7px 9px}.aquarium-toolbar .btn{gap:5px;padding:8px 10px;font-size:.78rem}.aquarium-region-nav{max-width:calc(100vw - 92px);top:6px;left:6px;transform:none}.aquarium-region-nav .btn{padding:5px 7px;font-size:.66rem}.aquarium-minimap-shell{bottom:75px;right:8px}}
