mainshell.razor.scss
MainShell
{
// Kill default grey Panel chrome — paint the whole surface.
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
justify-content: center;
align-items: center;
overflow: hidden;
// Project font is Assets/fonts/pressstart2p.ttf (Poppins is not packaged).
font-family: pressstart2p, "Press Start 2P", Consolas, "Courier New", monospace;
color: #e8e8e8;
pointer-events: all;
background-color: #08060c;
.shell
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
justify-content: center;
align-items: center;
background-color: #08060c;
overflow: hidden;
}
.screen
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
justify-content: center;
align-items: center;
flex-direction: column;
overflow: hidden;
}
// ----- WARNING (soft, not metal) -----
.warning
{
background-color: #0a1a24;
}
.warn-frame
{
position: relative;
flex-direction: column;
align-items: center;
justify-content: center;
flex-shrink: 0;
padding: 32px 40px;
width: 580px;
background-color: #0e1c28;
border: 1px solid #3a7a98;
border-radius: 14px;
}
.warn-frame.pulse
{
animation-name: warnpulse;
animation-duration: 1.4s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
.warn-banner
{
font-size: 22px;
font-weight: 700;
color: #e8c040;
letter-spacing: 1px;
margin-bottom: 18px;
text-align: center;
white-space: nowrap;
}
.warn-body
{
flex-direction: column;
align-items: center;
margin-bottom: 16px;
width: 100%;
}
.warn-line
{
font-size: 15px;
color: #c0d8e8;
text-align: center;
margin-bottom: 6px;
width: 100%;
}
.warn-line.strong
{
font-size: 15px;
font-weight: 700;
color: #f0a060;
margin-top: 6px;
margin-bottom: 10px;
}
.warn-line.dim
{
font-size: 13px;
color: #7a9aac;
margin-top: 10px;
}
.warn-parody
{
font-size: 12px;
color: #6a8a9a;
margin-bottom: 22px;
text-align: center;
}
// ----- ACCESSIBILITY: Reduce Strobe -----
// Softens frantic CSS pulses; DeathFeel/BoomFeel also scale shake/flash in code.
.reduce-strobe .fish.meth,
.reduce-strobe .meth-aura,
.reduce-strobe .meth-eyes,
.reduce-strobe .meth-sweat,
.reduce-strobe .wd-shiver,
.reduce-strobe .jacked-veins,
.reduce-strobe .fish.stoned,
.reduce-strobe .stoned-aura,
.reduce-strobe .stoned-eyes,
.reduce-strobe .stoned-spark
{
animation-name: none;
animation-duration: 0s;
}
.reduce-strobe .meth-aura
{
opacity: 0.25;
}
.reduce-strobe .stoned-aura
{
opacity: 0.3;
}
.reduce-strobe .boom-shock
{
animation-duration: 0.75s;
opacity: 0.35;
border-width: 2px;
}
.reduce-strobe .boom-white-flash,
.reduce-strobe .death-flash
{
// Code already dims; cap CSS so overlays never full-screen blast
// (opacity set inline — keep pointer-events none)
}
.reduce-strobe .warn-frame.pulse
{
animation-name: none;
}
.reduce-strobe.ending.strobe-end .ending-frame,
.reduce-strobe .ending.strobe-end .ending-frame
{
animation-name: none;
}
.reduce-strobe .fish.just-taped .m80-prop
{
animation-duration: 0.2s;
}
.reduce-strobe .m80-spark
{
animation-name: none;
opacity: 0.4;
}
.settings-help
{
font-size: 11px;
color: #7a9aac;
text-align: center;
margin-top: 4px;
margin-bottom: 14px;
width: 100%;
padding: 0 8px;
}
// ----- ENDINGS -----
.ending
{
background-color: #080c14;
justify-content: center;
align-items: center;
}
.ending.end-good
{
background-color: #0a2030;
}
.ending.end-bad
{
background-color: #100808;
}
.ending.end-mixed
{
background-color: #101018;
}
.ending.strobe-end .ending-frame
{
animation-name: warnpulse;
animation-duration: 0.55s;
animation-iteration-count: infinite;
}
.ending-frame
{
flex-direction: column;
align-items: center;
width: 640px;
padding: 36px 40px;
background-color: #102030;
border: 3px solid #4a90b0;
border-radius: 16px;
}
.ending.end-good .ending-frame
{
border-color: #50a878;
background-color: #143028;
}
.ending.end-bad .ending-frame
{
border-color: #c04040;
background-color: #281018;
}
.ending.end-mixed .ending-frame
{
border-color: #a08840;
background-color: #282018;
}
.ending-kicker
{
font-size: 13px;
color: #90b0c0;
margin-bottom: 8px;
text-align: center;
}
.ending-title
{
font-size: 28px;
font-weight: 800;
color: #f0f8ff;
margin-bottom: 20px;
text-align: center;
}
.ending-line
{
font-size: 16px;
color: #d0e4f0;
text-align: center;
margin-bottom: 16px;
min-height: 48px;
width: 100%;
}
.ending-meta
{
font-size: 12px;
color: #7090a0;
margin-bottom: 8px;
}
.ending-hint
{
font-size: 12px;
color: #80a0b0;
margin-top: 12px;
}
// ----- TITLE SCREEN (arcade / solid game menu) -----
.menu
{
background-color: transparent;
justify-content: center;
align-items: center;
}
.settings
{
background-color: transparent;
}
.menu-bg
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #060a10;
overflow: hidden;
pointer-events: none;
}
.menu-center
{
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
z-index: 5;
font-family: Press Start 2P, pressstart2p, Consolas, Courier New, monospace;
pointer-events: all;
}
// Simple title + buttons — no badge / tagline / footer clutter
.menu-title
{
width: 92%;
max-width: 1100px;
font-size: 52px;
font-weight: 400;
color: #ffffff;
letter-spacing: 2px;
margin-bottom: 12px;
text-align: center;
white-space: normal;
flex-wrap: wrap;
justify-content: center;
align-items: center;
text-shadow:
-3px -3px 0 #000, 0 -3px 0 #000, 3px -3px 0 #000,
-3px 0 0 #000, 3px 0 0 #000,
-3px 3px 0 #000, 0 3px 0 #000, 3px 3px 0 #000;
}
.menu-sub
{
font-size: 10px;
font-weight: 400;
color: #7a98a8;
letter-spacing: 1px;
margin-bottom: 28px;
text-align: center;
text-shadow: -1px -1px 0 #000, 1px 1px 0 #000;
}
.menu-links
{
flex-direction: column;
align-items: center;
width: 100%;
}
.menu-link
{
font-size: 16px;
font-weight: 400;
color: #e8f4ff;
letter-spacing: 2px;
margin-bottom: 12px;
padding: 12px 28px;
cursor: pointer;
text-align: center;
background-color: #143040;
border: 2px solid #3a6080;
border-radius: 10px;
border-bottom: 4px solid #0a2030;
width: 260px;
justify-content: center;
text-shadow: -2px -2px 0 #000, 2px 2px 0 #000;
}
.menu-link.primary
{
font-size: 18px;
color: #102010;
background-color: #e8c040;
border-color: #ffe080;
border-bottom-color: #806020;
margin-bottom: 18px;
letter-spacing: 2px;
text-shadow: none;
font-weight: 400;
}
.menu-link.quiet
{
font-size: 12px;
color: #a0b8c8;
background-color: #102838;
border-color: #2a5060;
border-bottom-color: #0a1820;
margin-bottom: 10px;
padding: 10px 20px;
letter-spacing: 1px;
width: 220px;
}
.menu-link:hover
{
color: #ffffff;
border-color: #6ab0d0;
background-color: #1a5068;
}
.menu-link.primary:hover
{
color: #102010;
background-color: #ffe060;
border-color: #fff0a0;
}
.menu-link.quiet:hover
{
color: #e8f0f8;
background-color: #1a4050;
}
.menu-link.danger
{
color: #e0a0a0;
border-color: #604040;
border-bottom-color: #301818;
}
.menu-link.danger:hover
{
color: #ff8080;
background-color: #402028;
border-color: #a05050;
}
// Kept for Settings + warning panels
.menu-panel
{
position: relative;
flex-direction: column;
align-items: center;
flex-shrink: 0;
padding: 36px 40px;
width: 440px;
background-color: #0e1c28;
border: 1px solid #2a5068;
border-radius: 14px;
z-index: 2;
}
.menu-panel.simple
{
padding: 24px 28px 20px 28px;
width: 300px;
background-color: #0e1c28ee;
border: 1px solid #2a5068;
border-radius: 12px;
}
.kicker
{
font-size: 11px;
font-weight: 700;
letter-spacing: 2px;
color: #6a9ab8;
margin-bottom: 12px;
white-space: nowrap;
text-transform: uppercase;
}
.title
{
font-size: 36px;
font-weight: 700;
color: #f0f8fc;
letter-spacing: 0.5px;
text-transform: none;
text-align: center;
white-space: nowrap;
}
.menu-panel.simple .title
{
font-size: 28px;
margin-bottom: 20px;
}
.title.small
{
font-size: 22px;
margin-bottom: 16px;
}
.tagline
{
margin-top: 10px;
margin-bottom: 28px;
font-size: 14px;
color: #8ab0c4;
text-align: center;
width: 100%;
}
.menu-buttons
{
flex-direction: column;
align-items: stretch;
width: 260px;
}
.menu-panel.simple .menu-buttons
{
width: 220px;
}
.menu-foot
{
margin-top: 22px;
font-size: 11px;
color: #5a8090;
}
// ----- BUTTONS (soft pill) -----
.btn
{
padding: 14px 20px;
margin-bottom: 10px;
background-color: #1a4058;
border: 2px solid #4a8aaa;
border-radius: 12px;
font-size: 15px;
font-weight: 700;
letter-spacing: 0.5px;
color: #e8f4fc;
text-align: center;
cursor: pointer;
justify-content: center;
align-items: center;
white-space: nowrap;
text-transform: none;
}
.btn:hover
{
border-color: #7ac0d8;
background-color: #245870;
color: #ffffff;
}
.btn.primary
{
background-color: #2a7090;
border-color: #6ab8d8;
color: #ffffff;
}
.btn.primary:hover
{
background-color: #3588a8;
border-color: #90d0e8;
}
.btn.danger
{
background-color: #3a4850;
border-color: #6a7880;
color: #c8d0d4;
}
.btn.danger:hover
{
background-color: #4a5860;
border-color: #889098;
}
.btn.disabled
{
opacity: 0.4;
border-color: #3a5060;
color: #708090;
pointer-events: none;
background-color: #152830;
}
.btn.slim
{
min-width: 44px;
margin-bottom: 0;
padding: 8px 14px;
border-radius: 10px;
font-size: 13px;
}
// ----- SETTINGS -----
.settings
{
background-color: #0a1c28;
}
.settings-panel
{
width: 460px;
align-items: stretch;
}
// ----- ACHIEVEMENTS (main menu) -----
.achievements-panel
{
width: 520px;
max-height: 560px;
align-items: stretch;
}
.achievements-meta
{
font-size: 12px;
font-weight: 700;
color: #8ab0c4;
margin-bottom: 12px;
text-align: center;
width: 100%;
}
.achievements-scroll
{
flex-direction: column;
width: 100%;
max-height: 380px;
overflow: scroll;
margin-bottom: 14px;
flex-grow: 1;
min-height: 0;
}
.achievements-row
{
flex-direction: row;
align-items: flex-start;
width: 100%;
padding: 10px 12px;
margin-bottom: 6px;
background-color: #0a2030;
border: 1px solid #2a5060;
border-radius: 10px;
flex-shrink: 0;
}
.achievements-row.got
{
border-color: #3a8060;
background-color: #0c2820;
}
.achievements-row.locked
{
opacity: 0.72;
}
.achievements-star
{
font-size: 16px;
color: #ffd24a;
margin-right: 10px;
flex-shrink: 0;
width: 18px;
text-align: center;
}
.achievements-row.locked .achievements-star
{
color: #5a7080;
}
.achievements-body
{
flex-direction: column;
flex-grow: 1;
min-width: 0;
}
.achievements-row-title
{
font-size: 13px;
font-weight: 800;
color: #e8f4ff;
margin-bottom: 2px;
}
.achievements-row-desc
{
font-size: 11px;
color: #8aa8b8;
}
.achievements-row.got .achievements-row-title
{
color: #b8f0d0;
}
.setting-row
{
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
width: 100%;
}
.setting-label
{
font-size: 13px;
font-weight: 700;
letter-spacing: 1px;
color: #8ab0c4;
white-space: nowrap;
}
.slider-row
{
flex-direction: row;
align-items: center;
}
.setting-value
{
min-width: 56px;
text-align: center;
font-size: 14px;
font-weight: 700;
color: #e0f0f8;
margin-left: 8px;
margin-right: 8px;
}
// ----- PLAYING (arcade cabinet frame) -----
.playing
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #060e14;
justify-content: center;
align-items: center;
padding-top: 12px;
padding-bottom: 12px;
overflow: hidden;
flex-wrap: nowrap;
}
.playing.chill
{
background-color: #061018;
}
.playing.nochill
{
background-color: #10080c;
}
// Layout only — no outer cabinet bezel (tank is the frame)
.play-bezel
{
flex-direction: column;
align-items: center;
padding: 8px 12px;
background-color: transparent;
border: 0;
border-radius: 0;
flex-shrink: 0;
max-height: 100%;
}
.playing.nochill .play-bezel
{
background-color: transparent;
border: 0;
}
.play-bezel-inner
{
flex-direction: column;
align-items: center;
flex-shrink: 0;
}
.playing.salt-view .tank-water
{
background-color: #0a3d5c;
}
.playing.salt-view.nochill .tank-water
{
background-color: #1a1520;
}
// Flat HUD row — fixed height so nothing below jumps
.cq-topbar
{
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 1280px;
height: 72px;
min-height: 72px;
max-height: 72px;
margin-bottom: 4px;
padding: 4px 4px;
background-color: transparent;
border: 0;
border-radius: 0;
flex-shrink: 0;
flex-grow: 0;
overflow: visible;
}
.playing.nochill .cq-topbar
{
background-color: transparent;
border: 0;
}
.cq-top-left
{
// Empty balance weight for the right census so wallet stays centered
flex-direction: row;
align-items: center;
flex-shrink: 0;
min-width: 220px;
width: 220px;
}
.cq-top-center
{
flex-direction: row;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.cq-top-right
{
flex-direction: row;
align-items: center;
justify-content: flex-end;
flex-shrink: 0;
min-width: 220px;
}
// Fixed-height coach slot — empty or filled, same size (no layout jump)
.cq-hint-row
{
width: 1280px;
height: 30px;
min-height: 30px;
max-height: 30px;
flex-shrink: 0;
flex-grow: 0;
flex-direction: row;
justify-content: center;
align-items: center;
margin-bottom: 4px;
overflow: visible;
}
.cq-hint
{
flex-shrink: 0;
flex-grow: 0;
width: auto;
max-width: 720px;
padding: 5px 16px;
background-color: #0c1a24;
border: 1px solid #2a4860;
border-radius: 999px;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.2px;
color: #9ab8c8;
text-align: center;
justify-content: center;
align-items: center;
height: 26px;
min-height: 26px;
max-height: 26px;
white-space: nowrap;
}
.cq-hint.focus
{
color: #ffe8a0;
border-color: #907828;
background-color: #1a1c10;
}
.cq-hint.warn
{
color: #ffb8a0;
border-color: #903838;
background-color: #1e1014;
}
.cq-hint.nudge
{
color: #a8ecc8;
border-color: #388858;
background-color: #0c1e14;
}
.playing.nochill .cq-hint
{
background-color: #161014;
border-color: #483038;
color: #c0a8b0;
}
// Top-bar laptop shortcut — fixed size so spritebox (100% fill) can't blow the layout
.dw-top-icon
{
flex-direction: column;
align-items: center;
justify-content: center;
padding: 4px 8px 5px 8px;
margin-right: 8px;
background-color: #0e2018;
border: 2px solid #2a6048;
border-radius: 10px;
cursor: pointer;
flex-shrink: 0;
flex-grow: 0;
width: 54px;
height: 54px;
overflow: hidden;
}
.dw-top-icon:hover
{
border-color: #50c878;
background-color: #143028;
}
.dw-top-icon.on
{
border-color: #80e0a0;
background-color: #1a3828;
}
.playing.nochill .dw-top-icon
{
background-color: #1a1014;
border-color: #5a3038;
}
.dw-top-icon-box
{
width: 32px;
height: 32px;
flex-shrink: 0;
overflow: hidden;
position: relative;
}
.dw-top-sprite
{
width: 100%;
height: 100%;
pointer-events: none;
}
.dw-top-fallback
{
width: 100%;
height: 100%;
background-color: #50c878;
border-radius: 4px;
}
.dw-top-label
{
font-size: 8px;
font-weight: 800;
letter-spacing: 1px;
color: #70d0a0;
margin-top: 2px;
flex-shrink: 0;
height: auto;
}
// Live fish counts — soft chip, thin edge
.cq-census
{
flex-direction: column;
justify-content: center;
min-width: 140px;
max-width: 200px;
max-height: 80px;
padding: 6px 10px;
background-color: #0e1c28aa;
border: 1px solid #2a4860;
border-radius: 10px;
flex-shrink: 0;
overflow: scroll;
}
.cq-census-alert
{
font-size: 10px;
font-weight: 700;
color: #ffb060;
margin-bottom: 3px;
}
.playing.nochill .cq-census
{
background-color: #181018aa;
border-color: #4a3038;
}
.cq-census-head
{
flex-direction: row;
align-items: center;
width: 100%;
margin-bottom: 4px;
}
.cq-census-icon-box
{
width: 22px;
height: 22px;
flex-shrink: 0;
margin-right: 6px;
overflow: hidden;
position: relative;
}
.cq-census-icon
{
width: 100%;
height: 100%;
pointer-events: none;
}
.cq-census-title
{
font-size: 10px;
font-weight: 700;
letter-spacing: 1px;
color: #6a9ab0;
text-transform: uppercase;
flex-grow: 1;
}
.playing.nochill .cq-census-title
{
color: #b07080;
}
.cq-census-total
{
font-size: 12px;
font-weight: 800;
color: #e8f4ff;
}
.cq-census-rows
{
flex-direction: column;
width: 100%;
}
.cq-census-row
{
flex-direction: row;
align-items: center;
width: 100%;
margin-top: 2px;
}
.census-swatch
{
width: 22px;
height: 16px;
border-radius: 3px;
margin-right: 6px;
flex-shrink: 0;
border: 1px solid #00000055;
overflow: hidden;
position: relative;
}
.census-swatch.has-sprite
{
background-color: #0a1820;
border-color: #1a3040;
}
.census-swatch .swatch-sprite
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.cq-census-name
{
font-size: 11px;
font-weight: 600;
color: #c0d8e8;
flex-grow: 1;
}
.cq-census-n
{
font-size: 12px;
font-weight: 800;
color: #ffd24a;
margin-left: 6px;
}
.cq-census-empty
{
font-size: 11px;
color: #6a8898;
font-style: italic;
}
.cq-top-chip
{
flex-direction: column;
justify-content: center;
min-width: 180px;
max-width: 320px;
padding: 6px 12px;
background-color: #0e1c28aa;
border: 1px solid #2a4860;
border-radius: 10px;
}
.cq-top-chip.right
{
align-items: flex-end;
text-align: right;
}
.playing.nochill .cq-top-chip
{
background-color: #181018aa;
border-color: #4a3038;
}
.cq-top-main
{
font-size: 15px;
font-weight: 700;
color: #e8f4ff;
}
.cq-top-sub
{
font-size: 11px;
font-weight: 600;
color: #7a9aac;
margin-top: 2px;
}
.cq-top-alert
{
font-size: 13px;
font-weight: 700;
color: #f0a060;
}
.playing.nochill .cq-top-alert
{
color: #f08080;
}
// Kept for shop / other panels that still use pill chrome
.cq-pill
{
flex-direction: column;
padding: 10px 16px;
min-width: 200px;
background-color: #122836;
border: 2px solid #2a5068;
border-radius: 10px;
}
.cq-pill-label
{
font-size: 10px;
font-weight: 700;
letter-spacing: 2px;
color: #6a9ab8;
text-transform: uppercase;
}
.cq-pill-title
{
font-size: 16px;
font-weight: 700;
color: #e8f4ff;
margin-top: 2px;
}
.cq-pill-sub
{
font-size: 11px;
color: #7a9aac;
margin-top: 3px;
}
// ----- Cold Chip: GBA-style hardware wallet (generic, no brand) -----
.cold-chip
{
position: relative;
flex-direction: column;
align-items: center;
justify-content: center;
overflow: visible;
flex-shrink: 0;
cursor: pointer;
}
.cold-chip.help-open .cold-chip-shell
{
border-color: #c8a040;
}
.cold-chip-hint
{
font-size: 8px;
font-weight: 600;
letter-spacing: 0.5px;
color: #6a8898;
margin-top: 3px;
text-align: center;
width: 100%;
justify-content: center;
height: 10px;
flex-shrink: 0;
}
.cold-chip:hover .cold-chip-hint
{
color: #a0c0d0;
}
.cold-chip-shell
{
flex-direction: column;
align-items: center;
// Fixed shell — never grows with digit count
background-color: #222830;
border: 1px solid #1a1e24;
border-radius: 10px;
padding: 0;
overflow: hidden;
width: 210px;
flex-shrink: 0;
}
.cold-chip-body
{
flex-direction: column;
align-items: center;
justify-content: flex-start;
padding: 6px 10px 6px 10px;
width: 210px;
flex-shrink: 0;
background-color: #2c343e;
}
.cold-chip-brand
{
font-size: 9px;
font-weight: 800;
letter-spacing: 2px;
color: #8a929c;
margin-bottom: 4px;
text-align: center;
width: 100%;
justify-content: center;
height: 12px;
flex-shrink: 0;
}
.cold-chip-lcd
{
// Outer LCD bezel — fixed
width: 188px;
padding: 3px;
background-color: #1a2010;
border: 2px solid #0c1008;
border-radius: 4px;
flex-direction: column;
align-items: center;
flex-shrink: 0;
}
.cold-chip-lcd-glass
{
// Fixed viewport grid — both lines share the same center axis
flex-direction: column;
align-items: center;
justify-content: center;
padding: 4px 6px;
background-color: #0a280a;
border: 1px solid #306230;
border-radius: 2px;
width: 176px;
height: 52px;
overflow: hidden;
flex-shrink: 0;
}
.cold-chip-lcd.lit .cold-chip-lcd-glass
{
background-color: #0e3010;
border-color: #50a040;
}
.cold-chip-lcd-row
{
// Full-width rows so both lines center on the same axis
flex-direction: row;
align-items: center;
justify-content: center;
flex-wrap: nowrap;
width: 100%;
flex-shrink: 0;
overflow: hidden;
}
.cold-chip-lcd-row.bal
{
height: 30px;
min-height: 30px;
max-height: 30px;
}
// Income /s — tiny, still centered under balance
.cold-chip-lcd-row.rate
{
height: 14px;
min-height: 14px;
max-height: 14px;
margin-top: 0;
opacity: 0.72;
}
.wallet-lcd-line
{
flex-shrink: 0;
image-rendering: pixelated;
pointer-events: none;
// Stay centered in the row regardless of texture width
align-self: center;
}
.wallet-lcd-line.sm
{
opacity: 0.9;
}
.cold-chip-controls
{
flex-direction: row;
align-items: center;
justify-content: center;
margin-top: 5px;
width: 100%;
height: 12px;
flex-shrink: 0;
}
.cold-chip-btn
{
width: 14px;
height: 8px;
margin-left: 4px;
margin-right: 4px;
background-color: #1a1e24;
border: 1px solid #0a0c10;
border-radius: 2px;
}
.cold-chip-led
{
width: 6px;
height: 6px;
margin-left: 10px;
border-radius: 50%;
background-color: #3a2020;
border: 1px solid #1a1010;
}
.cold-chip-led.on
{
background-color: #50e060;
border-color: #206030;
}
.cold-chip.pulse .cold-chip-shell
{
border-color: #4a6a40;
}
.cold-chip.pulse .cold-chip-brand
{
color: #b0c8a0;
}
.playing.nochill .cold-chip-shell
{
background-color: #2a2428;
border-color: #1a1014;
}
.playing.nochill .cold-chip-body
{
background-color: #383038;
}
.playing.nochill .cold-chip-rail
{
background-color: #403848;
}
// Training / meth +stat pops — text only (no bubble/box)
.stat-float
{
position: absolute;
width: auto;
height: auto;
min-width: 0;
margin-left: -60px;
font-size: 13px;
font-weight: 800;
padding: 0;
border: 0;
border-radius: 0;
background-color: transparent;
pointer-events: none;
z-index: 45;
white-space: nowrap;
text-align: center;
justify-content: center;
align-items: center;
overflow: visible;
// Soft outline so text stays readable over water
text-shadow:
-1px -1px 0 #000000,
1px -1px 0 #000000,
-1px 1px 0 #000000,
1px 1px 0 #000000,
0 0 6px #000000aa;
}
// Combined multi-stat line: "+4 END +2 SPD +1 AGI"
.stat-float.combo
{
width: auto;
margin-left: -80px;
font-size: 13px;
letter-spacing: 0.4px;
color: #fff0a0;
background-color: transparent;
border: 0;
}
.stat-float.end
{
color: #ffe08a;
background-color: transparent;
border: 0;
}
.stat-float.spd
{
color: #a8e8ff;
background-color: transparent;
border: 0;
}
.stat-float.agi
{
color: #c8ff90;
background-color: transparent;
border: 0;
}
.stat-float.weed
{
color: #c8ff90;
background-color: transparent;
border: 0;
width: auto;
margin-left: -70px;
}
.stat-float.weed-down
{
color: #ffc090;
background-color: transparent;
border: 0;
width: auto;
margin-left: -50px;
}
.playing.nochill .stat-float.combo
{
color: #ffe8b0;
}
.playing.nochill .stat-float.end
{
color: #ffd080;
}
.playing.nochill .stat-float.spd
{
color: #f0c0c8;
}
.playing.nochill .stat-float.agi
{
color: #e0f0a0;
}
.playing.nochill .stat-float.weed
{
color: #d0f0a0;
}
.playing.nochill .stat-float.weed-down
{
color: #f0b090;
}
// Gym panel mirror of last rep gains
.train-gain-pops
{
font-size: 12px;
font-weight: 800;
color: #ffd24a;
text-align: center;
margin-bottom: 10px;
padding: 6px 4px;
background-color: #1a2810;
border: 2px solid #80a040;
border-radius: 6px;
flex-shrink: 0;
height: auto;
white-space: normal;
}
.playing.nochill .train-gain-pops
{
color: #ffd0a0;
background-color: #201018;
border-color: #a06040;
}
// Dogecoin ±Ð pops — rise from wallet, no layout shift
.doge-float-layer
{
position: absolute;
left: 0;
right: 0;
top: 100%;
margin-top: 4px;
flex-direction: column;
align-items: center;
pointer-events: none;
z-index: 45;
overflow: visible;
}
.doge-float
{
font-size: 15px;
font-weight: 800;
padding: 3px 10px;
margin-bottom: 2px;
border-radius: 8px;
pointer-events: none;
flex-shrink: 0;
}
.doge-float.earn
{
color: #ffe08a;
background-color: #1a3020;
border: 1px solid #50a060;
}
.doge-float.spend
{
color: #f0b0b0;
font-size: 13px;
font-weight: 700;
background-color: #301818;
border: 1px solid #804040;
}
.doge-float.funny
{
font-size: 16px;
color: #fff0a0;
background-color: #2a2410;
border: 2px solid #e8c040;
}
.playing.nochill .doge-float.earn
{
background-color: #1a2818;
border-color: #60a050;
}
.playing.nochill .doge-float.spend
{
background-color: #281014;
}
// Legacy money classes kept so old themes don't hard-fail
.cq-money
{
position: relative;
flex-direction: column;
align-items: center;
padding: 6px 24px;
background-color: #102a38;
border: 2px solid #3a7088;
border-radius: 12px;
min-width: 180px;
}
.cq-money-value
{
font-size: 26px;
font-weight: 800;
color: #ffd24a;
}
.cq-money-rate
{
font-size: 12px;
font-weight: 600;
color: #7cbc6a;
margin-top: 1px;
}
// Thin mood line — fixed height
.cq-mood-bar
{
position: relative;
width: 1280px;
height: 4px;
min-height: 4px;
max-height: 4px;
margin-bottom: 8px;
background-color: #0a1820;
border: 0;
border-radius: 2px;
overflow: hidden;
flex-shrink: 0;
flex-grow: 0;
opacity: 0.4;
}
.cq-mood-bar.lit
{
opacity: 0.9;
}
.cq-mood-bar.dim .cq-mood-fill
{
opacity: 0.25;
}
.cq-mood-fill
{
position: absolute;
left: 0;
top: 0;
bottom: 0;
background-color: #5a9ab8;
}
.playing.nochill .cq-mood-fill
{
background-color: #c43c3c;
}
.cq-mood-mark
{
position: absolute;
left: 40%;
top: 0;
bottom: 0;
width: 2px;
background-color: #ffd24a;
opacity: 0.55;
}
// Floating game notice — overlays tank, does not push layout
.cq-notice
{
position: absolute;
left: 50%;
// Sit just under the top bar / switcher, over the tank rim
top: 118px;
margin-left: -280px;
width: 560px;
padding: 7px 14px;
background-color: #0e2838;
border: 1px solid #3a7088;
border-radius: 8px;
color: #c8e0ec;
font-size: 12px;
font-weight: 600;
text-align: center;
z-index: 40;
pointer-events: none;
opacity: 0.92;
}
.cq-notice.status
{
opacity: 0.8;
border-color: #4a6070;
color: #a8c0cc;
}
.cq-notice.urgent
{
background-color: #281018;
border-color: #a04048;
color: #f0c0c0;
opacity: 0.95;
}
.playing.nochill .cq-notice
{
background-color: #1a1014;
border-color: #704048;
}
// Legacy class kept for safety
.cq-toast
{
// redirected style — prefer .cq-notice
position: absolute;
left: 50%;
top: 118px;
margin-left: -280px;
width: 560px;
padding: 7px 14px;
background-color: #0e2838;
border: 1px solid #3a7088;
border-radius: 8px;
color: #c8e0ec;
font-size: 12px;
font-weight: 600;
text-align: center;
z-index: 40;
pointer-events: none;
}
.cq-toast.urgent
{
background-color: #281018;
border-color: #a04048;
color: #f0c0c0;
}
.cq-stage-row
{
flex-direction: row;
align-items: flex-start;
justify-content: center;
flex-shrink: 0;
width: 1280px;
}
.cq-stage
{
flex-direction: column;
align-items: center;
flex-shrink: 0;
position: relative;
}
// ----- Fish context menu (inside tank-water, same coords as fish) -----
.fish-menu-layer
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: 50;
}
.fish-menu-backdrop
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
pointer-events: all;
background-color: #00000040;
z-index: 50;
}
.fish-menu
{
position: absolute;
width: 158px;
min-height: 0;
height: auto;
padding: 10px 10px 8px 10px;
background-color: #143848;
border: 2px solid #5ab8d8;
border-bottom: 4px solid #0a2838;
border-right: 3px solid #0a2838;
border-radius: 12px;
flex-direction: column;
align-items: stretch;
flex-shrink: 0;
pointer-events: all;
z-index: 51;
}
.playing.nochill .fish-menu
{
background-color: #1a1018;
border-color: #8b4a5a;
}
.fish-menu-title
{
font-size: 14px;
font-weight: 800;
color: #e8f4ff;
text-align: center;
flex-shrink: 0;
height: auto;
}
// Click to open type-to-rename
.fish-menu-title.clickable
{
cursor: pointer;
padding: 5px 8px;
border-radius: 6px;
border: 1px solid #3a7088;
background-color: #0e2838;
}
.fish-menu-title.clickable:hover
{
border-color: #70c8e8;
background-color: #1a4860;
color: #ffffff;
}
.fish-menu.renaming
{
width: 200px;
}
// Sandbox.UI.TextEntry field
.fish-rename-entry
{
width: 100%;
min-height: 32px;
height: 32px;
margin: 4px 0 8px 0;
padding: 4px 8px;
background-color: #0a2030;
border: 2px solid #50a0c8;
border-radius: 8px;
font-size: 13px;
font-weight: 700;
color: #e8f8ff;
flex-shrink: 0;
white-space: nowrap;
cursor: text;
pointer-events: all;
}
.playing.nochill .fish-rename-entry
{
background-color: #140c10;
border-color: #a06070;
color: #f0e0e8;
}
.fish-rename-row
{
flex-direction: row;
width: 100%;
flex-shrink: 0;
height: auto;
justify-content: space-between;
}
.fish-rename-row .fish-menu-btn.slim
{
padding: 7px 6px;
margin: 0 2px 0 2px;
font-size: 11px;
flex-grow: 1;
min-width: 0;
border-bottom-width: 2px;
}
.fish-menu-sub
{
font-size: 10px;
color: #7a9aac;
text-align: center;
margin-bottom: 4px;
margin-top: 2px;
flex-shrink: 0;
height: auto;
}
.fish-menu-stats-line
{
font-size: 10px;
font-weight: 700;
color: #a0d0e8;
text-align: center;
margin-bottom: 4px;
padding: 4px 0;
background-color: #0a2030;
border-radius: 4px;
flex-shrink: 0;
height: auto;
}
.playing.nochill .fish-menu-stats-line
{
color: #d0a0a8;
background-color: #120a10;
}
.fish-menu-stat-bars
{
flex-direction: column;
width: 100%;
gap: 3px;
margin-bottom: 8px;
padding: 0 2px;
flex-shrink: 0;
height: auto;
}
.fish-stat-bar
{
position: relative;
width: 100%;
height: 5px;
background-color: #0a1820;
border-radius: 2px;
overflow: hidden;
border: 1px solid #1a3040;
}
.fish-stat-fill
{
position: absolute;
left: 0;
top: 0;
bottom: 0;
border-radius: 2px;
}
.fish-stat-bar.end .fish-stat-fill
{
background-color: #50c878;
}
.fish-stat-bar.spd .fish-stat-fill
{
background-color: #50b0ff;
}
.fish-stat-bar.agi .fish-stat-fill
{
background-color: #e0a040;
}
.fish-menu-btn
{
padding: 10px 8px;
margin-bottom: 5px;
background-color: #1c4a62;
border: 2px solid #3a7088;
border-bottom: 4px solid #0e2838;
border-radius: 8px;
font-size: 13px;
font-weight: 700;
color: #e8f4ff;
text-align: center;
cursor: pointer;
flex-shrink: 0;
height: auto;
min-height: 0;
white-space: nowrap;
overflow: hidden;
justify-content: center;
}
.fish-menu-btn:hover
{
border-color: #6ab0d0;
background-color: #245870;
border-bottom-color: #143848;
}
.fish-menu-btn.primary
{
background-color: #1a6040;
border-color: #40a070;
border-bottom-color: #0a3020;
color: #e8ffe8;
font-weight: 800;
}
.fish-menu-btn.primary:hover
{
background-color: #247848;
border-color: #60c890;
border-bottom-color: #104828;
}
.fish-menu-btn.danger
{
background-color: #4a2028;
border-color: #a04048;
color: #ffd0d0;
}
.fish-menu-btn.quiet
{
background-color: #1a303c;
border-color: #3a5060;
color: #9ab0c0;
font-weight: 600;
margin-bottom: 0;
}
.fish.menu-on.has-sprite .fish-sprite
{
border: 2px solid #ffd24a;
}
.fish.menu-on:not( .has-sprite ) .fish-body
{
border: 2px solid #ffd24a;
}
// ----- Right-side inventory (food, m80, juice, meth…) -----
.inv-panel
{
flex-direction: column;
width: 120px;
margin-left: 10px;
padding: 6px 4px;
background-color: transparent;
border: 0;
border-radius: 0;
flex-shrink: 0;
flex-grow: 0;
align-self: flex-start;
max-height: 640px;
overflow: scroll;
}
.playing.nochill .inv-panel
{
background-color: transparent;
border: 0;
}
.inv-title
{
font-size: 10px;
font-weight: 800;
letter-spacing: 1.5px;
color: #6a9ab0;
text-align: center;
margin-bottom: 6px;
text-transform: uppercase;
opacity: 0.85;
}
.playing.nochill .inv-title
{
color: #b07080;
}
.inv-slots
{
flex-direction: column;
align-items: stretch;
width: 100%;
}
.inv-slot
{
flex-direction: column;
align-items: center;
padding: 8px 6px 7px 6px;
margin-bottom: 6px;
background-color: #0e1c28cc;
border: 1px solid #2a4860;
border-radius: 10px;
cursor: pointer;
position: relative;
}
.inv-slot:hover
{
border-color: #50a0c8;
background-color: #143848ee;
}
.inv-slot.on
{
border-color: #d0a040;
background-color: #2a2410ee;
}
.inv-slot.armed
{
border-color: #e04040;
background-color: #301018ee;
}
.inv-slot.hot
{
border-color: #50c070;
}
.inv-slot.empty
{
opacity: 0.45;
}
.playing.nochill .inv-slot
{
background-color: #180e14;
border-color: #503038;
}
// Laptop under tools — open shop (fixed box; spritebox fills 100%)
.dw-laptop
{
flex-direction: column;
align-items: center;
margin-top: 6px;
padding: 8px 6px 8px 6px;
background-color: #0e1c28cc;
border: 1px solid #2a7050;
border-radius: 10px;
cursor: pointer;
flex-shrink: 0;
flex-grow: 0;
width: 112px;
overflow: hidden;
}
.dw-laptop:hover
{
border-color: #50c878;
background-color: #142820ee;
}
.dw-laptop.on
{
border-color: #90e8b0;
background-color: #1a3828ee;
}
.playing.nochill .dw-laptop
{
background-color: #181018cc;
border-color: #5a3038;
}
.dw-laptop-box
{
width: 48px;
height: 48px;
flex-shrink: 0;
overflow: hidden;
position: relative;
margin-bottom: 6px;
}
.dw-laptop-sprite
{
width: 100%;
height: 100%;
pointer-events: none;
}
.dw-laptop-fallback
{
width: 100%;
height: 100%;
background-color: #40a060;
border-radius: 6px;
}
.dw-laptop-label
{
font-size: 9px;
font-weight: 800;
letter-spacing: 0.5px;
color: #90e8b0;
text-align: center;
text-transform: uppercase;
flex-shrink: 0;
height: auto;
white-space: nowrap;
}
.dw-laptop-sub
{
font-size: 8px;
font-weight: 600;
color: #5a9070;
margin-top: 2px;
text-align: center;
flex-shrink: 0;
height: auto;
}
.inv-icon-wrap
{
position: relative;
width: 48px;
height: 48px;
margin-bottom: 4px;
align-items: center;
justify-content: center;
}
.inv-icon
{
width: 48px;
height: 48px;
pointer-events: none;
}
.inv-qty
{
position: absolute;
right: -4px;
bottom: -2px;
min-width: 16px;
padding: 1px 4px;
background-color: #102838;
border: 1px solid #4a90b0;
border-radius: 6px;
font-size: 10px;
font-weight: 800;
color: #ffd24a;
text-align: center;
}
.inv-label
{
font-size: 11px;
font-weight: 700;
color: #e0f0ff;
text-align: center;
flex-wrap: wrap;
justify-content: center;
max-width: 110px;
}
.inv-label.food-name
{
font-size: 10px;
line-height: 12px;
min-height: 24px;
align-items: center;
}
.inv-meta
{
font-size: 9px;
color: #7a9aac;
margin-top: 1px;
text-align: center;
}
.inv-actions
{
flex-direction: row;
justify-content: center;
margin-top: 5px;
width: 100%;
}
.inv-chip
{
padding: 3px 7px;
margin-left: 2px;
margin-right: 2px;
background-color: #1c4a62;
border: 1px solid #4a9abc;
border-radius: 6px;
font-size: 10px;
font-weight: 700;
color: #e8f4ff;
cursor: pointer;
}
.inv-chip.quiet
{
background-color: #1a303c;
border-color: #3a5868;
color: #a0b8c8;
}
.inv-foot
{
margin-top: 4px;
font-size: 9px;
color: #5a7888;
text-align: center;
}
// Tank type switcher — centered above the glass (aquarium-game convention)
.tank-switcher
{
flex-direction: row;
align-items: stretch;
justify-content: center;
margin-top: 4px;
margin-bottom: 8px;
padding: 4px;
background-color: #0e2434;
border: 2px solid #2a5068;
border-radius: 14px;
flex-shrink: 0;
}
.playing.nochill .tank-switcher
{
background-color: #181018;
border-color: #503038;
}
.tank-switch
{
flex-direction: row;
align-items: center;
justify-content: center;
min-width: 88px;
min-height: 34px;
padding: 8px 20px;
margin-left: 2px;
margin-right: 2px;
background-color: #163848;
border: 2px solid transparent;
border-radius: 10px;
cursor: pointer;
font-size: 13px;
font-weight: 800;
letter-spacing: 0.6px;
color: #c0dce8;
text-align: center;
}
.tank-switch:hover
{
background-color: #1e5068;
}
.tank-switch.on
{
background-color: #2a88b0;
border-color: #80d0f0;
color: #ffffff;
}
.playing.nochill .tank-switch.on
{
background-color: #803040;
border-color: #e07080;
}
.tank-switch.locked
{
opacity: 0.5;
background-color: #122838;
}
// Bottom dock — situational actions
.cq-dock
{
flex-direction: column;
align-items: center;
width: 1280px;
margin-top: 8px;
padding: 10px 14px;
background-color: #0e2030;
border: 2px solid #2a5068;
border-bottom: 4px solid #0a1520;
border-radius: 12px;
flex-shrink: 0;
}
.playing.nochill .cq-dock
{
background-color: #1a1218;
border-color: #5a3038;
}
.cq-dock-row
{
flex-direction: row;
align-items: center;
justify-content: center;
width: 100%;
flex-wrap: wrap;
}
.cq-dock-spacer
{
width: 16px;
height: 8px;
}
.cq-btn
{
padding: 11px 18px;
margin-left: 5px;
margin-right: 5px;
margin-bottom: 0;
background-color: #1c4a62;
border: 2px solid #4a9abc;
border-bottom: 4px solid #0e2838;
border-radius: 10px;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.3px;
color: #f0f8fc;
text-align: center;
cursor: pointer;
justify-content: center;
align-items: center;
white-space: nowrap;
}
.cq-btn:hover
{
background-color: #286a88;
border-color: #7ad0f0;
border-bottom-color: #143848;
}
.cq-btn.primary
{
background-color: #2a80a8;
border-color: #70c8e8;
border-bottom-color: #104060;
color: #ffffff;
}
.cq-btn.warn
{
background-color: #5a4850;
border-color: #c09090;
color: #fff0f0;
}
.cq-btn.danger
{
background-color: #a04048;
border-color: #e08080;
color: #ffffff;
}
.cq-btn.quiet
{
background-color: #1a3848;
border-color: #4a6878;
color: #b0c8d4;
}
.cq-btn.slim
{
padding: 7px 14px;
min-width: 56px;
font-size: 12px;
border-radius: 10px;
}
.cq-btn.off
{
// Still clickable so handlers can show "need more Ð" feedback
opacity: 0.45;
pointer-events: all;
}
.cq-btn.on
{
border-color: #ffd24a;
background-color: #3a6870;
}
.cq-tab
{
padding: 9px 16px;
margin-left: 4px;
margin-right: 4px;
background-color: #1a4054;
border: 2px solid #3a7088;
border-radius: 12px;
font-size: 12px;
font-weight: 700;
color: #b0d0e0;
cursor: pointer;
justify-content: center;
align-items: center;
}
.cq-tab.on
{
background-color: #2a88b0;
border-color: #80d0f0;
color: #ffffff;
}
.cq-tab.off
{
opacity: 0.4;
pointer-events: none;
}
.cq-shop-tabs
{
flex-direction: row;
margin-bottom: 10px;
flex-shrink: 0;
flex-wrap: wrap;
}
// Achievement toast — corner chip, discreet
.cq-ach-toast
{
position: absolute;
right: 24px;
bottom: 100px;
width: 280px;
padding: 10px 12px;
background-color: #102838;
border: 2px solid #3a90b0;
border-radius: 10px;
flex-direction: column;
align-items: flex-start;
z-index: 55;
pointer-events: none;
opacity: 0.94;
}
.cq-ach-kicker
{
font-size: 9px;
font-weight: 800;
letter-spacing: 1.5px;
color: #6ab8d8;
text-transform: uppercase;
}
.cq-ach-title
{
font-size: 14px;
font-weight: 700;
color: #ffd24a;
margin-top: 2px;
text-align: left;
}
.cq-ach-body
{
font-size: 11px;
color: #90b0c0;
margin-top: 2px;
text-align: left;
}
.cq-ach-body
{
font-size: 12px;
color: #c0dce8;
margin-top: 4px;
text-align: center;
}
.shop-row.owned .shop-col.name
{
color: #ffd24a;
}
// AI battle panel — must sit ABOVE .shop-backdrop (z 70) or clicks never reach it
.battle-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -340px;
margin-top: -280px;
width: 680px;
max-height: 560px;
padding: 14px 16px;
background-color: #0c1a24;
border: 2px solid #3a80a0;
border-radius: 12px;
flex-direction: column;
z-index: 81;
pointer-events: all;
overflow: hidden;
}
.playing.nochill .battle-panel
{
background-color: #161018;
border-color: #6a3840;
}
.battle-head
{
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 100%;
margin-bottom: 8px;
flex-shrink: 0;
}
.battle-head-title
{
font-size: 18px;
font-weight: 800;
color: #e8f4ff;
letter-spacing: 0.5px;
}
.battle-msg
{
font-size: 12px;
font-weight: 600;
color: #8ab0c0;
margin-bottom: 8px;
padding: 0;
background-color: transparent;
border-radius: 0;
height: auto;
flex-shrink: 0;
}
.battle-templates
{
flex-direction: column;
width: 100%;
overflow: scroll;
max-height: 220px;
flex-shrink: 1;
pointer-events: all;
padding-right: 4px;
}
.battle-row
{
flex-direction: column;
align-items: stretch;
width: 100%;
padding: 10px 12px;
margin-bottom: 5px;
background-color: #0a1822;
border: 1px solid #2a5060;
border-radius: 8px;
cursor: pointer;
flex-shrink: 0;
height: auto;
min-height: 40px;
pointer-events: all;
}
.battle-row-name,
.battle-row-meta
{
pointer-events: none;
}
.battle-row.on
{
border-color: #50c070;
background-color: #143828;
}
.battle-row.locked
{
opacity: 0.5;
pointer-events: all;
}
.battle-row:hover
{
border-color: #4a90b0;
background-color: #123040;
}
.battle-row.on:hover
{
border-color: #60d080;
background-color: #184830;
}
.battle-row-name
{
font-size: 13px;
font-weight: 700;
color: #e8f4ff;
height: auto;
flex-shrink: 0;
white-space: nowrap;
}
.battle-row-meta
{
font-size: 11px;
font-weight: 600;
color: #7a9aac;
margin-top: 2px;
height: auto;
flex-shrink: 0;
white-space: nowrap;
overflow: hidden;
}
.battle-row.locked .battle-row-meta
{
color: #a08060;
white-space: normal;
}
.battle-roster
{
flex-direction: column;
width: 100%;
margin-top: 10px;
flex-shrink: 0;
padding-top: 10px;
border-top: 1px solid #1a3848;
}
.battle-roster-label
{
font-size: 12px;
font-weight: 700;
color: #90b8c8;
margin-bottom: 6px;
height: auto;
}
.battle-roster-row
{
flex-direction: row;
flex-wrap: wrap;
width: 100%;
margin-bottom: 4px;
}
.battle-start-row
{
flex-direction: row;
justify-content: center;
width: 100%;
margin-top: 12px;
flex-shrink: 0;
}
.battle-start-row .cq-btn.big
{
min-width: 200px;
padding-top: 12px;
padding-bottom: 12px;
font-size: 15px;
font-weight: 800;
justify-content: center;
pointer-events: all;
}
.battle-start-hint
{
width: 100%;
margin-top: 6px;
font-size: 11px;
font-weight: 600;
color: #e0a060;
text-align: center;
flex-shrink: 0;
height: auto;
}
.battle-chip
{
flex-direction: row;
align-items: center;
padding: 6px 10px;
margin-right: 6px;
margin-bottom: 6px;
background-color: #0a2030;
border: 2px solid #3a6070;
border-radius: 8px;
font-size: 11px;
color: #c8dce8;
cursor: pointer;
pointer-events: all;
}
.battle-chip.on
{
border-color: #50c070;
background-color: #1a4030;
color: #e8ffe8;
}
.battle-chip.hurt
{
border-color: #804040;
background-color: #281818;
color: #c09090;
opacity: 0.75;
}
.battle-chip span,
.battle-chip .legend-swatch
{
pointer-events: none;
}
// Visual fight stage (tank-like mini arena)
.battle-stage-wrap
{
width: 100%;
margin-top: 4px;
margin-bottom: 8px;
align-items: center;
justify-content: center;
}
.battle-stage
{
position: relative;
width: 620px;
height: 210px;
// visible so name/hp under fish aren't clipped
overflow: visible;
border-radius: 12px;
border: 3px solid #3a7088;
background-color: #0a2840;
flex-shrink: 0;
}
.playing.nochill .battle-stage
{
border-color: #6a3040;
background-color: #140a12;
}
.battle-stage.live
{
border-color: #50a0c0;
}
.battle-water
{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: #0c3048;
opacity: 0.95;
border-radius: 10px;
}
.playing.nochill .battle-water
{
background-color: #1a1018;
}
.battle-bubbles
{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 40px;
opacity: 0.25;
background-color: #40a0c020;
}
.battle-gravel
{
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 22px;
background-color: #3a3020;
border-top: 2px solid #5a4830;
}
.playing.nochill .battle-gravel
{
background-color: #2a1818;
border-top-color: #4a2828;
}
.battle-lane
{
position: absolute;
top: 6px;
font-size: 10px;
font-weight: 800;
letter-spacing: 1px;
color: #80b0c8;
opacity: 0.7;
pointer-events: none;
}
.battle-lane.you-lane
{
left: 10px;
color: #70d090;
}
.battle-lane.ai-lane
{
right: 10px;
color: #e07070;
}
.battle-flash
{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
background-color: #fff8e0;
pointer-events: none;
z-index: 20;
border-radius: 10px;
}
.battle-actor
{
position: absolute;
flex-direction: column;
align-items: center;
pointer-events: none;
z-index: 5;
}
.battle-actor.lunge
{
z-index: 12;
}
.battle-actor.hit
{
z-index: 11;
}
.battle-actor.down
{
opacity: 0.45;
z-index: 2;
}
.battle-actor.win
{
z-index: 8;
}
.battle-actor-sprite
{
width: 100%;
height: 100%;
}
.battle-actor-body
{
width: 100%;
height: 70%;
border-radius: 50%;
border: 2px solid #ffffff40;
}
.battle-actor-fin
{
position: absolute;
right: -4px;
top: 30%;
width: 30%;
height: 40%;
border-radius: 40%;
opacity: 0.85;
}
.battle-actor.foe .battle-actor-fin
{
right: auto;
left: -4px;
}
.battle-actor-jacked
{
position: absolute;
left: -4px;
right: -4px;
top: -4px;
bottom: 14px;
border: 2px solid #e0c040;
border-radius: 8px;
opacity: 0.55;
pointer-events: none;
}
.battle-actor-name
{
position: absolute;
left: 50%;
bottom: -14px;
margin-left: -40px;
width: 80px;
font-size: 9px;
font-weight: 700;
color: #e8f4ff;
text-align: center;
text-shadow: 0 1px 2px #000000cc;
white-space: nowrap;
overflow: hidden;
}
.battle-actor.foe .battle-actor-name
{
color: #ffd0d0;
}
.battle-actor-hp
{
position: absolute;
left: 10%;
right: 10%;
bottom: -22px;
height: 5px;
background-color: #102028;
border-radius: 3px;
border: 1px solid #2a4858;
overflow: hidden;
}
.battle-actor-hp-fill
{
height: 100%;
background-color: #40c060;
}
.battle-actor-hp-fill.ai
{
background-color: #e05050;
}
.battle-fx
{
position: absolute;
transform: translate( -50%, -100% );
font-size: 13px;
font-weight: 800;
padding: 2px 8px;
border-radius: 6px;
pointer-events: none;
z-index: 25;
white-space: nowrap;
text-shadow: 0 1px 2px #000000aa;
}
.battle-fx.hit
{
color: #ffe0a0;
background-color: #301818;
border: 1px solid #a05040;
}
.battle-fx.crit
{
color: #fff060;
font-size: 15px;
background-color: #402010;
border: 2px solid #e0a020;
}
.battle-fx.dodge
{
color: #a0e8ff;
background-color: #102838;
border: 1px solid #40a0c8;
}
.battle-fx.ko
{
color: #ff8080;
font-size: 16px;
background-color: #280808;
border: 2px solid #c04040;
}
.battle-log
{
flex-direction: column;
width: 100%;
max-height: 88px;
overflow: scroll;
padding: 8px 10px;
background-color: #0a1820;
border-radius: 8px;
border: 1px solid #2a4050;
}
.battle-log-line
{
font-size: 11px;
color: #a0c0d0;
margin-bottom: 2px;
}
.battle-result
{
flex-direction: column;
align-items: center;
width: 100%;
margin-top: 10px;
padding: 12px;
border-radius: 10px;
}
.battle-result.win
{
background-color: #143828;
border: 2px solid #40a060;
}
.battle-result.lose
{
background-color: #381818;
border: 2px solid #a04040;
}
.battle-result-title
{
font-size: 18px;
font-weight: 800;
color: #f0f8ff;
}
.battle-result-body
{
font-size: 12px;
color: #b0c8d8;
margin-top: 4px;
text-align: center;
}
.fish.battle-pick .fish-body
{
border: 2px solid #50e080;
}
// Fish Gym — centered popup (above dim backdrop)
.train-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -220px;
margin-top: -200px;
width: 440px;
padding: 18px 20px 16px 20px;
background-color: #0e2434;
border: 2px solid #3a90b0;
border-radius: 14px;
flex-direction: column;
align-items: center;
z-index: 81;
pointer-events: all;
flex-shrink: 0;
}
.playing.nochill .train-panel
{
background-color: #1a1018;
border-color: #8b4a5a;
}
.train-panel-kicker
{
font-size: 11px;
font-weight: 800;
letter-spacing: 1.5px;
color: #6ab8d8;
text-transform: uppercase;
margin-bottom: 4px;
text-align: center;
}
.playing.nochill .train-panel-kicker
{
color: #c08090;
}
.train-panel-title
{
font-size: 22px;
font-weight: 800;
color: #e8f4ff;
margin-bottom: 8px;
text-align: center;
white-space: nowrap;
}
// Post-set gains card (after 3 reps)
.train-panel.train-result
{
margin-top: -120px;
border-color: #40a060;
background-color: #0e2818;
}
.playing.nochill .train-panel.train-result
{
border-color: #70a040;
background-color: #182010;
}
.train-result-line
{
width: 100%;
font-size: 16px;
font-weight: 800;
color: #b8f0c8;
text-align: center;
padding: 14px 12px;
margin-top: 4px;
background-color: #0a2010;
border: 2px solid #3a8050;
border-radius: 10px;
height: auto;
flex-shrink: 0;
white-space: normal;
}
.playing.nochill .train-result-line
{
color: #e0f0a0;
background-color: #141808;
border-color: #607030;
}
// Single-line stats
.train-side-stats-line
{
font-size: 13px;
font-weight: 700;
color: #a0d0e8;
letter-spacing: 0.3px;
padding: 6px 12px;
background-color: #0a2030;
border: 1px solid #2a5068;
border-radius: 8px;
margin-bottom: 6px;
height: auto;
flex-shrink: 0;
white-space: nowrap;
text-align: center;
justify-content: center;
width: auto;
}
.playing.nochill .train-side-stats-line
{
color: #e0b0b8;
background-color: #120a10;
border-color: #5a3038;
}
.train-side-sub
{
font-size: 12px;
color: #8ab0c4;
margin-bottom: 10px;
margin-top: 2px;
text-align: center;
flex-shrink: 0;
height: auto;
}
.playing.nochill .train-side-sub
{
color: #b08890;
}
.train-game-label
{
font-size: 11px;
font-weight: 700;
color: #ffd24a;
letter-spacing: 0.5px;
margin-bottom: 8px;
text-transform: uppercase;
}
.train-reps
{
flex-direction: row;
align-items: center;
justify-content: center;
margin-bottom: 10px;
}
.train-rep-dot
{
width: 12px;
height: 12px;
border-radius: 50%;
margin-left: 5px;
margin-right: 5px;
background-color: #1a3040;
border: 2px solid #3a6080;
}
.train-rep-dot.done
{
background-color: #40b060;
border-color: #60d080;
}
.train-rep-dot.current
{
background-color: #ffd24a;
border-color: #ffe080;
width: 14px;
height: 14px;
}
.train-msg
{
font-size: 12px;
font-weight: 700;
color: #c8e8a0;
margin-bottom: 10px;
margin-top: 8px;
text-align: center;
min-height: 32px;
height: auto;
justify-content: center;
align-items: center;
flex-shrink: 0;
padding: 8px 6px;
background-color: #0a2030;
border-radius: 6px;
white-space: normal;
}
.train-msg.hit
{
color: #ffd24a;
font-weight: 800;
font-size: 12px;
border: 1px solid #806030;
}
.train-msg span
{
white-space: normal;
text-align: center;
height: auto;
}
.train-msg b
{
color: #c8e8a0;
font-weight: 700;
}
.train-track
{
position: relative;
width: 100%;
height: 44px;
background-color: #0a2030;
border: 2px solid #3a7088;
border-radius: 8px;
overflow: hidden;
margin-bottom: 10px;
flex-shrink: 0;
}
.playing.nochill .train-track
{
background-color: #120a10;
border-color: #6a3040;
}
.train-zone
{
position: absolute;
top: 0;
bottom: 0;
// Bright green so the hit window is obvious
background-color: #40c060;
opacity: 0.92;
border-left: 1px solid #80f0a0;
border-right: 1px solid #80f0a0;
}
.train-marker
{
position: absolute;
top: 2px;
bottom: 2px;
// Centered on left% (matches 0–1 hit logic)
width: 8px;
margin-left: -4px;
background-color: #ffd24a;
border-radius: 3px;
border: 1px solid #fff8c0;
z-index: 2;
}
.train-score
{
flex-direction: row;
align-items: center;
justify-content: center;
font-size: 11px;
color: #7a9aac;
margin-bottom: 12px;
}
.train-score b
{
color: #e0f0ff;
font-weight: 700;
}
.train-score-sep
{
margin-left: 6px;
margin-right: 6px;
color: #4a6878;
}
.train-actions
{
flex-direction: row;
align-items: center;
justify-content: center;
width: 100%;
margin-top: 4px;
flex-shrink: 0;
}
.train-actions .cq-btn
{
margin-left: 6px;
margin-right: 6px;
margin-bottom: 0;
justify-content: center;
min-width: 100px;
}
.train-actions .cq-btn.big
{
padding-top: 12px;
padding-bottom: 12px;
padding-left: 28px;
padding-right: 28px;
font-size: 16px;
font-weight: 800;
min-width: 140px;
}
// Steroid inject — absolute center above dim
.inject-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -220px;
margin-top: -130px;
width: 440px;
padding: 20px 22px;
background-color: #123040;
border: 2px solid #4a9abc;
border-radius: 14px;
flex-direction: column;
align-items: center;
z-index: 81;
pointer-events: all;
flex-shrink: 0;
}
.playing.nochill .inject-panel
{
background-color: #1a1018;
border-color: #8b4a5a;
}
.inject-title
{
font-size: 22px;
font-weight: 800;
color: #e8f4ff;
margin-bottom: 4px;
}
.inject-msg
{
font-size: 13px;
color: #8ab0c4;
margin-top: 4px;
margin-bottom: 14px;
text-align: center;
}
.inject-track
{
position: relative;
width: 100%;
height: 36px;
background-color: #0a2030;
border: 2px solid #3a7088;
border-radius: 10px;
overflow: hidden;
margin-bottom: 16px;
}
.inject-zone
{
position: absolute;
left: 42%;
width: 20%;
top: 0;
bottom: 0;
background-color: #3a9050;
opacity: 0.75;
}
.inject-marker
{
position: absolute;
top: 2px;
bottom: 2px;
width: 6px;
margin-left: -3px;
background-color: #ffd24a;
border-radius: 2px;
}
.fish.jacked .fish-body
{
border: 2px solid #e04040;
}
// Overfeed chonk — size is mainly from DrawScaleX/Y; CSS sells the roundness.
.fish.fat .fish-body
{
border-radius: 50%;
}
.fish.fat-2 .fish-body,
.fish.fat-3 .fish-body
{
border-radius: 50%;
}
.fish.fat-3 .fish-belly
{
opacity: 0.95;
height: 55%;
}
.fish.has-sprite.fat-2 .fish-sprite,
.fish.has-sprite.fat-3 .fish-sprite
{
// Soft belly emphasis without recoloring the sheet too hard
border-radius: 40%;
}
// Jacked tint over pixel sprites (red eyes vibe without new sheets yet)
.fish.has-sprite.jacked .fish-sprite
{
// slight red wash via border glow
border: 2px solid #e04040;
}
.fish.has-sprite.meth .fish-sprite
{
// already has meth overlays; keep sprite readable
}
.jacked-veins
{
position: absolute;
left: 10%;
right: 10%;
top: 30%;
height: 3px;
background-color: #c02040;
opacity: 0.7;
pointer-events: none;
z-index: 4;
}
.playing.remove-mode .cq-dock
{
border-color: #c06060;
}
// Post-fight injury — reuses sick look + cooldown badge
.fight-hurt-badge
{
position: absolute;
left: 50%;
bottom: -12px;
margin-left: -16px;
min-width: 32px;
padding: 1px 4px;
background-color: #402018;
border: 1px solid #a05030;
border-radius: 4px;
font-size: 9px;
font-weight: 800;
color: #ffb080;
text-align: center;
pointer-events: none;
z-index: 8;
}
.fish.fight-hurt.has-sprite .fish-sprite
{
opacity: 0.72;
filter: saturate( 0.55 );
}
// Progressive death look (sick-1 … sick-4)
.fish.sick-1 .fish-body
{
opacity: 0.85;
border: 1px solid #7a9a50;
}
.fish.sick-2 .fish-body
{
opacity: 0.65;
border: 1px solid #8a8040;
}
.fish.sick-3 .fish-body
{
opacity: 0.45;
border: 1px solid #a05020;
}
.fish.sick-4 .fish-body
{
opacity: 0.28;
border: 2px solid #c41e1e;
}
.fish.meth .fish-body
{
border: 2px solid #ff40a0;
// Slightly stretched / wired look
opacity: 1;
}
.fish.meth
{
// Tiny scale pulse via animation (tweaking)
animation-name: methpulse;
animation-duration: 0.18s;
animation-iteration-count: infinite;
animation-timing-function: steps( 2, end );
}
// ----- Weed gummies high (trippy, slow) -----
.fish.stoned
{
animation-name: stonedwobble;
animation-duration: 1.6s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
.fish.stoned.has-sprite .fish-sprite
{
// Soft green-purple haze on the sprite panel
border: 2px solid #80e060;
opacity: 0.92;
}
.fish.stoned .fish-body
{
border: 2px solid #90e050;
opacity: 0.95;
}
.stoned-aura
{
position: absolute;
left: -8px;
top: -8px;
right: -8px;
bottom: -8px;
border: 2px solid #70d050;
border-radius: 50%;
opacity: 0.45;
pointer-events: none;
z-index: 2;
animation-name: stonedaura;
animation-duration: 1.2s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
.stoned-aura.ring2
{
left: -14px;
top: -14px;
right: -14px;
bottom: -14px;
border-color: #c060e0;
opacity: 0.3;
animation-duration: 1.8s;
}
.stoned-eyes
{
position: absolute;
right: 12%;
top: 20%;
width: 14px;
height: 10px;
background-color: #a0ff60;
border: 1px solid #ffffff;
border-radius: 4px;
pointer-events: none;
z-index: 6;
opacity: 0.9;
}
.stoned-spark
{
position: absolute;
width: 5px;
height: 5px;
border-radius: 50%;
pointer-events: none;
z-index: 7;
opacity: 0.85;
animation-name: stonedspark;
animation-duration: 0.9s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
}
.stoned-spark.a
{
left: 10%;
top: -4px;
background-color: #80ff60;
}
.stoned-spark.b
{
right: 8%;
top: 40%;
background-color: #e080ff;
animation-duration: 1.1s;
}
.stoned-spark.c
{
left: 40%;
bottom: -2px;
background-color: #60e0ff;
animation-duration: 1.3s;
}
.meth-eyes
{
position: absolute;
right: 14%;
top: 18%;
width: 12px;
height: 8px;
background-color: #ff1040;
border: 1px solid #ffffff;
border-radius: 2px;
pointer-events: none;
z-index: 5;
// Dilated pupils energy
box-shadow: 0 0 6px #ff2060;
}
.meth-aura
{
position: absolute;
left: -4px;
top: -4px;
right: -4px;
bottom: -4px;
border: 1px solid #ff60c0;
opacity: 0.55;
pointer-events: none;
z-index: 3;
animation-name: methaura;
animation-duration: 0.22s;
animation-iteration-count: infinite;
animation-timing-function: steps( 2, end );
}
.meth-sweat
{
position: absolute;
left: 20%;
top: -6px;
width: 4px;
height: 6px;
background-color: #a0d0ff;
opacity: 0.8;
pointer-events: none;
z-index: 5;
border-radius: 2px;
}
.hud-stat.addiction-hud
{
margin-top: 3px;
font-size: 11px;
font-weight: 800;
letter-spacing: 1px;
color: #ff80c0;
}
// Hooked but sober — dull, needy
.fish.hooked-1 .fish-body
{
border: 1px solid #a06080;
}
.fish.hooked-2 .fish-body,
.fish.hooked-3 .fish-body
{
border: 1px solid #c04080;
}
.fish.hooked-4 .fish-body
{
border: 2px solid #e02070;
}
// Withdrawal — pale, sinking vibe
.fish.withdrawing .fish-body
{
opacity: 0.55;
border: 2px solid #606080;
}
.wd-shiver
{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
border: 1px dashed #8090b0;
opacity: 0.5;
pointer-events: none;
z-index: 4;
animation-name: wdshiver;
animation-duration: 0.35s;
animation-iteration-count: infinite;
animation-timing-function: steps( 2, end );
}
// Tiny "X" eyes when things get bad
.sick-x
{
position: absolute;
right: 14%;
top: 20%;
width: 10px;
height: 10px;
pointer-events: none;
z-index: 5;
font-size: 9px;
font-weight: 800;
color: #201808;
text-align: center;
}
.fish.sick-2 .sick-x,
.fish.sick-3 .sick-x,
.fish.sick-4 .sick-x
{
// drawn as two lines via borders
border-left: 2px solid #101008;
border-top: 2px solid #101008;
width: 7px;
height: 7px;
// rotate-ish using asymmetric box — keep simple as dark blot
background-color: #101008;
opacity: 0.85;
border-radius: 1px;
}
.fish.sick-4 .sick-x
{
background-color: #c41e1e;
opacity: 1;
}
.hud-stat.death-warn
{
margin-top: 4px;
font-size: 12px;
font-weight: 800;
letter-spacing: 2px;
color: #ff6040;
}
.playing.dying-hard .hud-stat.death-warn
{
color: #ff2020;
}
// Tank-wide distress flash + vignette
.death-flash
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #c41e1e;
pointer-events: none;
z-index: 8;
}
.boom-white-flash
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ffffff;
pointer-events: none;
z-index: 9;
}
// Centered on fish via inline left/top; margins keep the ring expanding around that point.
.boom-shock
{
position: absolute;
width: 80px;
height: 80px;
margin-left: -40px;
margin-top: -40px;
border: 4px solid #ffd040;
border-radius: 50%;
pointer-events: none;
z-index: 10;
opacity: 0.7;
animation-name: boomshock;
animation-duration: 0.45s;
animation-timing-function: ease-out;
animation-iteration-count: 1;
}
.tank-glass.booming
{
border-color: #ff4020;
}
.death-vignette
{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: 7;
border: 0 solid #000000;
opacity: 0;
}
.death-vignette.death-stage-1
{
opacity: 0.15;
border: 8px solid #1a1008;
}
.death-vignette.death-stage-2
{
opacity: 0.28;
border: 14px solid #180c08;
}
.death-vignette.death-stage-3
{
opacity: 0.4;
border: 22px solid #140808;
}
.death-vignette.death-stage-4
{
opacity: 0.55;
border: 30px solid #100404;
}
.tank-glass.death-stage-3
{
border-color: #a04020;
}
.tank-glass.death-stage-4
{
border-color: #c41e1e;
}
.playing.dying .tank-water
{
// slight sick tint under the water
background-color: #0d3248;
}
.playing.dying-hard .tank-water
{
background-color: #1a2030;
}
.playing.nochill .tank-water
{
background-color: #1a1018;
}
.playing.nochill .tank-glass
{
border-color: #8b1a1a;
}
.playing.nochill .hud-kicker
{
color: #c43c3c;
}
.chaos-bar
{
position: relative;
width: 1280px;
height: 10px;
margin-bottom: 8px;
background-color: #1a2430;
border: 2px solid #2a4050;
flex-shrink: 0;
overflow: hidden;
}
.chaos-fill
{
position: absolute;
left: 0;
top: 0;
bottom: 0;
background-color: #c41e1e;
}
.chaos-mark
{
position: absolute;
left: 40%;
top: 0;
bottom: 0;
width: 2px;
background-color: #ffd24a;
opacity: 0.85;
}
.playing.nochill .chaos-bar
{
border-color: #5a2020;
background-color: #18080c;
}
.tank-chrome
{
position: relative;
flex-direction: column;
align-items: center;
flex-shrink: 0;
}
.tank-hud
{
flex-direction: row;
justify-content: space-between;
align-items: flex-end;
width: 1280px;
margin-bottom: 8px;
}
.hud-left
{
flex-direction: column;
min-width: 180px;
}
.hud-center
{
flex-direction: column;
align-items: center;
flex-grow: 1;
}
.doge-label
{
font-size: 10px;
font-weight: 800;
letter-spacing: 3px;
color: #c9a227;
}
.doge-value
{
font-size: 32px;
font-weight: 800;
color: #ffd24a;
letter-spacing: 1px;
}
.doge-rate
{
font-size: 12px;
font-weight: 700;
color: #8bc34a;
margin-top: 2px;
}
.hud-kicker
{
font-size: 11px;
font-weight: 700;
letter-spacing: 3px;
color: #3a8ab0;
}
.hud-title
{
font-size: 24px;
font-weight: 800;
color: #e8f4ff;
letter-spacing: 1px;
}
.hud-right
{
flex-direction: column;
align-items: flex-end;
min-width: 180px;
}
.hud-stat
{
font-size: 13px;
font-weight: 700;
color: #c0d8e8;
letter-spacing: 1px;
}
.hud-stat.dim
{
font-size: 10px;
color: #5a7080;
margin-top: 4px;
}
// Meth-rush glass cracks (over water)
.tank-cracks
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: 38;
overflow: hidden;
}
.crack
{
position: absolute;
background-color: #c8e0f0;
opacity: 0.55;
pointer-events: none;
}
.crack.c1
{
left: 18%;
top: 12%;
width: 2px;
height: 28%;
}
.crack.c2
{
left: 18%;
top: 22%;
width: 14%;
height: 2px;
}
.crack.c3
{
right: 22%;
top: 18%;
width: 2px;
height: 35%;
}
.crack.c4
{
right: 12%;
top: 40%;
width: 18%;
height: 2px;
}
.crack.c5
{
left: 40%;
top: 8%;
width: 2px;
height: 42%;
}
.crack.c6
{
left: 28%;
bottom: 22%;
width: 22%;
height: 2px;
}
.crack.c7
{
left: 55%;
top: 30%;
width: 2px;
height: 40%;
}
.crack.c8
{
left: 8%;
bottom: 18%;
width: 2px;
height: 25%;
}
.crack.spider
{
left: 48%;
top: 48%;
width: 3px;
height: 3px;
border-radius: 50%;
opacity: 0.7;
background-color: #e8f4ff;
}
.tank-glass.cracks-3 .crack,
.tank-glass.cracks-4 .crack,
.tank-glass.cracks-5 .crack
{
opacity: 0.7;
background-color: #e0f0ff;
}
.tank-glass.cracks-5
{
border-color: #6a8090;
}
.tank-glass.meth-rush
{
border-color: #e05090;
}
// Meth rush minigame panel
.meth-rush-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -220px;
margin-top: -160px;
width: 440px;
padding: 20px 22px;
background-color: #1a1020;
border: 2px solid #e04080;
border-radius: 14px;
flex-direction: column;
align-items: center;
z-index: 81;
pointer-events: all;
}
.meth-rush-kicker
{
font-size: 11px;
font-weight: 800;
letter-spacing: 2px;
color: #ff60a0;
margin-bottom: 4px;
}
.meth-rush-title
{
font-size: 20px;
font-weight: 800;
color: #ffe0f0;
margin-bottom: 4px;
}
.meth-rush-sub
{
font-size: 12px;
font-weight: 600;
color: #c090a8;
margin-bottom: 12px;
text-align: center;
}
.meth-rush-msg
{
font-size: 13px;
font-weight: 700;
color: #ffd080;
margin-bottom: 12px;
min-height: 20px;
text-align: center;
}
.meth-rush-track
{
margin-bottom: 10px;
}
.meth-rush-score
{
flex-direction: row;
font-size: 12px;
color: #b090a0;
margin-bottom: 14px;
}
// One clean aquarium frame — the only heavy bezel left
.tank-glass
{
position: relative;
flex-direction: column;
width: 1280px;
flex-shrink: 0;
border: 2px solid #3a6080;
background-color: #0a1824;
border-radius: 10px;
overflow: hidden;
cursor: pointer;
}
// Thin lip, not a second frame
.tank-rim
{
width: 100%;
height: 4px;
background-color: #243848;
flex-shrink: 0;
}
.tank-rim.top
{
background-color: #2a4858;
}
.tank-rim.bottom
{
background-color: #1e3444;
}
.tank-water
{
position: relative;
width: 1280px;
height: 620px;
// Deep aquarium blue
background-color: #0b3a5a;
overflow: hidden;
flex-shrink: 0;
}
// Full-tank click catcher under fish — closes menu without eating fish clicks
.tank-water-hit
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
z-index: 1;
pointer-events: all;
cursor: default;
}
.playing.chill .tank-glass
{
border-color: #4a8aaa;
background-color: #0a2030;
border-radius: 4px;
}
.playing.chill .tank-rim
{
background-color: #3a6078;
}
.playing.chill .tank-rim.top
{
background-color: #4a7890;
}
.playing.chill .tank-gravel
{
background-color: #6a5040;
}
.tank-shine
{
position: absolute;
top: 0;
left: 0;
right: 0;
height: 48px;
background-color: #1a6088;
opacity: 0.35;
pointer-events: none;
}
.tank-bubbles
{
position: absolute;
right: 40px;
bottom: 40px;
width: 8px;
height: 120px;
background-color: #4aa0c8;
opacity: 0.15;
pointer-events: none;
}
.tank-gravel
{
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 28px;
background-color: #5a4030;
pointer-events: none;
z-index: 1;
}
// Habitat prop overlay (flavor silhouettes)
.hab-prop
{
position: absolute;
pointer-events: none;
z-index: 1;
opacity: 0;
}
// ----- HABITAT THEMES -----
.tank-glass.hab-glass .tank-water
{
// default aquarium look
}
.tank-glass.hab-deluxe
{
border-color: #6ab0d0;
border-radius: 6px;
}
.tank-glass.hab-deluxe .tank-rim
{
background-color: #4a7898;
height: 12px;
}
.tank-glass.hab-deluxe .tank-water
{
background-color: #0c4568;
}
.tank-glass.hab-deluxe .hab-prop
{
opacity: 0.2;
right: 24px;
top: 40px;
width: 48px;
height: 48px;
background-color: #80c8e8;
border-radius: 4px;
}
// Bathtub — porcelain pink rim, soapy water
.tank-glass.hab-bathtub
{
border-color: #c8a0b0;
border-radius: 18px;
}
.tank-glass.hab-bathtub .tank-rim
{
background-color: #e8d0d8;
height: 14px;
}
.tank-glass.hab-bathtub .tank-rim.top
{
background-color: #f0e0e8;
border-radius: 16px 16px 0 0;
}
.tank-glass.hab-bathtub .tank-rim.bottom
{
background-color: #d8b8c4;
border-radius: 0 0 16px 16px;
}
.tank-glass.hab-bathtub .tank-water
{
background-color: #3a6a88;
}
.tank-glass.hab-bathtub .tank-gravel
{
background-color: #b0a090;
height: 18px;
}
.tank-glass.hab-bathtub .hab-prop
{
opacity: 0.55;
right: 36px;
top: 28px;
width: 36px;
height: 36px;
background-color: #e85070;
border-radius: 50%;
}
// Kiddie pool — loud plastic blue
.tank-glass.hab-kiddie
{
border-color: #40a0e0;
border-radius: 24px;
}
.tank-glass.hab-kiddie .tank-rim
{
background-color: #58b8f0;
height: 16px;
}
.tank-glass.hab-kiddie .tank-rim.top
{
background-color: #70c8f8;
}
.tank-glass.hab-kiddie .tank-water
{
background-color: #1a80b8;
}
.tank-glass.hab-kiddie .tank-gravel
{
background-color: #d0b060;
height: 14px;
}
.tank-glass.hab-kiddie .hab-prop
{
opacity: 0.4;
left: 28px;
top: 24px;
width: 50px;
height: 20px;
background-color: #f0d040;
border-radius: 8px;
}
// Neighbor pool — suburban tile green
.tank-glass.hab-neighbor
{
border-color: #2a8a70;
border-radius: 4px;
}
.tank-glass.hab-neighbor .tank-rim
{
background-color: #d0c8b8;
height: 12px;
}
.tank-glass.hab-neighbor .tank-water
{
background-color: #0a5a70;
}
.tank-glass.hab-neighbor .tank-gravel
{
background-color: #90a8a0;
height: 20px;
}
.tank-glass.hab-neighbor .hab-prop
{
opacity: 0.35;
right: 48px;
bottom: 48px;
width: 60px;
height: 40px;
background-color: #ffffff;
border-radius: 2px;
}
// Sewage duct — brown-green grime
.tank-glass.hab-sewage
{
border-color: #5a5030;
border-radius: 4px;
}
.tank-glass.hab-sewage .tank-rim
{
background-color: #4a4030;
height: 10px;
}
.tank-glass.hab-sewage .tank-water
{
background-color: #2a3820;
}
.tank-glass.hab-sewage .tank-gravel
{
background-color: #3a3420;
height: 26px;
}
// Storm drain — gray runoff
.tank-glass.hab-storm
{
border-color: #506070;
border-radius: 2px;
}
.tank-glass.hab-storm .tank-rim
{
background-color: #3a4850;
height: 8px;
}
.tank-glass.hab-storm .tank-water
{
background-color: #1a2830;
}
.tank-glass.hab-storm .tank-gravel
{
background-color: #2a3038;
height: 18px;
}
// Abandoned spa — lavender chlorine
.tank-glass.hab-spa
{
border-color: #8060a0;
border-radius: 14px;
}
.tank-glass.hab-spa .tank-rim
{
background-color: #c0b0d0;
height: 12px;
}
.tank-glass.hab-spa .tank-water
{
background-color: #3a2860;
}
.tank-glass.hab-spa .tank-gravel
{
background-color: #b0a0c0;
height: 16px;
}
// Community fountain
.tank-glass.hab-fountain
{
border-color: #80a0c0;
border-radius: 50%;
}
.tank-glass.hab-fountain .tank-rim
{
background-color: #a0b8c8;
height: 14px;
}
.tank-glass.hab-fountain .tank-water
{
background-color: #2060a0;
}
.tank-glass.hab-fountain .tank-gravel
{
background-color: #90a0b0;
height: 20px;
}
// Stolen hot tub
.tank-glass.hab-hottub
{
border-color: #c07040;
border-radius: 20px;
}
.tank-glass.hab-hottub .tank-rim
{
background-color: #d09050;
height: 14px;
}
.tank-glass.hab-hottub .tank-water
{
background-color: #4080a0;
}
.tank-glass.hab-hottub .tank-gravel
{
background-color: #806050;
height: 12px;
}
// Lake — murky natural green
.tank-glass.hab-lake
{
border-color: #3a6040;
border-radius: 8px;
}
.tank-glass.hab-lake .tank-rim
{
background-color: #4a6840;
height: 8px;
}
.tank-glass.hab-lake .tank-water
{
background-color: #1a4838;
}
.tank-glass.hab-lake .tank-gravel
{
background-color: #3a5030;
height: 32px;
}
.tank-glass.hab-lake .tank-shine
{
background-color: #2a7050;
opacity: 0.25;
}
// Gulf — warm gulf blue
.tank-glass.hab-gulf
{
border-color: #2080a0;
border-radius: 2px;
}
.tank-glass.hab-gulf .tank-rim
{
background-color: #c8b080;
height: 10px;
}
.tank-glass.hab-gulf .tank-water
{
background-color: #0a6888;
}
.tank-glass.hab-gulf .tank-gravel
{
background-color: #c8a868;
height: 22px;
}
// Pixel fish sprites (Assets/ui/sprites)
.fish.has-sprite
{
// body chrome hidden; sprite fills the box
}
.spritebox
{
pointer-events: none;
}
.fish-sprite
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1;
}
.spritebox.mirror-x
{
transform: scaleX( -1 );
}
.decor-sprite-fill
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.swatch-sprite
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.legend-swatch.has-sprite
{
position: relative;
overflow: hidden;
background-color: transparent;
}
// Facing flip is on .fish.flip (parent scaleX) — sprite inherits.
.fish.has-sprite .fish-body
{
opacity: 0;
}
.fish.has-sprite.selected
{
border: 2px solid #ffd24a;
}
// Shop / legend mini preview
.legend-swatch.has-sprite
{
background-repeat: no-repeat;
background-position: center;
background-size: contain;
border: 1px solid #2a4858;
}
// Cocaine sharks (ocean hazard)
.shark
{
position: absolute;
pointer-events: none;
z-index: 6;
flex-direction: row;
align-items: center;
}
.shark-sprite
{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1;
}
.shark.flip .shark-sprite
{
transform: scaleX( -1 );
}
.shark.has-sprite .shark-body,
.shark.has-sprite .shark-fin,
.shark.has-sprite .shark-eye,
.shark.has-sprite .shark-nose
{
opacity: 0;
}
.shark.flip
{
// mirror via child transform-like: swap layout by flipping children positions
}
.shark-body
{
position: absolute;
left: 8%;
right: 12%;
top: 25%;
bottom: 20%;
background-color: #1a2830;
border: 2px solid #0a1018;
border-radius: 40%;
}
.shark.flip .shark-body
{
left: 12%;
right: 8%;
}
.shark-fin
{
position: absolute;
left: 40%;
top: 0;
width: 18%;
height: 35%;
background-color: #243440;
border: 2px solid #0a1018;
}
.shark-eye
{
position: absolute;
right: 18%;
top: 38%;
width: 10px;
height: 10px;
background-color: #ff2040;
border-radius: 50%;
}
.shark.flip .shark-eye
{
right: auto;
left: 18%;
}
.shark-nose
{
position: absolute;
right: 0;
top: 35%;
width: 18%;
height: 30%;
background-color: #152028;
border-radius: 0 50% 50% 0;
}
.shark.flip .shark-nose
{
right: auto;
left: 0;
border-radius: 50% 0 0 50%;
}
.shark-label
{
position: absolute;
left: 28%;
bottom: 8%;
font-size: 9px;
font-weight: 800;
color: #e0e8f0;
opacity: 0.85;
}
.playing.shark-alert .tank-water
{
// slight red tint under alert
}
.playing.shark-alert .cq-pill-right .cq-pill-sub
{
color: #ff6060;
}
// Ocean — deep open water
.tank-glass.hab-ocean
{
border-color: #104060;
border-radius: 0;
}
.tank-glass.hab-ocean .tank-rim
{
background-color: #0a2030;
height: 6px;
}
.tank-glass.hab-ocean .tank-water
{
background-color: #042848;
}
.tank-glass.hab-ocean .tank-gravel
{
background-color: #1a3040;
height: 16px;
}
.tank-glass.hab-ocean .tank-shine
{
opacity: 0.15;
}
.tank-glass.hab-ocean .hab-prop
{
opacity: 0.12;
left: 80px;
top: 80px;
width: 120px;
height: 40px;
background-color: #206080;
border-radius: 20px;
}
// ----- DECOR (pixel sprites + CSS fallbacks on gravel) -----
// Sizes come ONLY from inline style (DecorDef.Width/Height) — never force width here.
.decor
{
position: absolute;
// Grab target — above fish so props on gravel are always clickable.
pointer-events: all;
cursor: grab;
z-index: 18;
overflow: hidden;
flex-direction: column;
justify-content: flex-end;
align-items: stretch;
}
.decor.dragging
{
z-index: 22;
opacity: 0.95;
cursor: grabbing;
}
.decor.flying
{
z-index: 14;
pointer-events: none;
}
// While holding a prop, show grab cursor over the play screen.
.playing.decor-holding
{
cursor: grabbing;
}
.decor.has-sprite
{
// Must be non-transparent for hit-testing — fully transparent panels often drop clicks in S&box.
background-color: #00000001;
border-width: 0;
border-radius: 0;
}
.decor .decor-sprite-fill
{
pointer-events: none;
}
// Fallback solid blocks only when no sprite (no fixed widths — use inline size)
.decor-plant
{
background-color: #2a8a40;
border: 2px solid #145020;
border-radius: 8px 8px 2px 2px;
}
.decor-chest
{
background-color: #b8860b;
border: 2px solid #6a4a08;
border-radius: 3px;
}
.decor-bubbler
{
background-color: #6a90a8;
border: 2px solid #304858;
}
.decor-forty
{
background-color: #3a5a28;
border: 2px solid #1a3010;
border-radius: 4px 4px 2px 2px;
}
.decor-cuffs
{
background-color: #8a8a90;
border: 2px solid #404048;
border-radius: 10px;
}
.decor-boot
{
background-color: #5a3020;
border: 2px solid #301808;
border-radius: 2px 8px 4px 2px;
}
.decor-meds
{
background-color: #e8e0d0;
border: 2px solid #8a8070;
border-radius: 2px;
}
.decor-doge
{
background-color: #ffd24a;
border: 2px solid #a08020;
border-radius: 4px 4px 2px 2px;
}
.decor-m80crate
{
background-color: #8b1a1a;
border: 2px solid #401010;
border-radius: 2px;
}
.decor.has-sprite.decor-plant,
.decor.has-sprite.decor-chest,
.decor.has-sprite.decor-bubbler,
.decor.has-sprite.decor-forty,
.decor.has-sprite.decor-cuffs,
.decor.has-sprite.decor-boot,
.decor.has-sprite.decor-meds,
.decor.has-sprite.decor-doge,
.decor.has-sprite.decor-m80crate
{
background-color: transparent;
border-width: 0;
}
.decor-sprite-fill
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.legend-swatch.has-sprite
{
background-repeat: no-repeat;
background-position: center;
background-size: 100% 100%;
background-color: transparent;
}
.fish
{
position: absolute;
pointer-events: all;
cursor: pointer;
flex-direction: row;
align-items: center;
justify-content: center;
z-index: 12;
}
.fish.menu-on
{
z-index: 48;
}
// Parent flip still used for non-sprite bodies / M80 prop layout.
// Textured sprites flip via SpriteBox.Mirror (scaleX on the panel that owns BackgroundImage).
.fish.flip
{
transform: scaleX( -1 );
}
// Sprite fish: don't rely on parent flip for the texture (BackgroundImage can ignore it).
.fish.has-sprite.flip
{
transform: none;
}
.fish.selected .fish-body
{
border: 2px solid #ffd24a;
}
// ----- M80 taped onto fish -----
.m80-prop
{
position: absolute;
// Sit on the fish midsection (fish local space; flip parent mirrors it).
left: 35%;
top: -6px;
width: 22px;
height: 28px;
pointer-events: none;
flex-direction: column;
align-items: center;
z-index: 5;
}
.fish.just-taped .m80-prop
{
// Slap-on beat when tape SFX fires.
animation-name: m80slap;
animation-duration: 0.35s;
animation-timing-function: ease-out;
animation-iteration-count: 1;
}
.m80-tape
{
position: absolute;
left: -2px;
right: -2px;
top: 12px;
height: 5px;
background-color: #d4c48a;
border: 1px solid #8a7840;
z-index: 3;
opacity: 0.95;
}
.m80-stick
{
position: relative;
width: 12px;
height: 22px;
flex-direction: column;
align-items: center;
z-index: 2;
}
.m80-cap
{
width: 12px;
height: 4px;
background-color: #2a2a2a;
border: 1px solid #101010;
}
.m80-body
{
width: 12px;
height: 16px;
background-color: #c41e1e;
border: 1px solid #6a1010;
border-top: none;
}
.m80-label
{
position: absolute;
left: 0;
right: 0;
top: 8px;
font-size: 5px;
font-weight: 800;
color: #ffd24a;
text-align: center;
letter-spacing: 0px;
}
.m80-fuse
{
position: absolute;
top: -6px;
left: 9px;
width: 2px;
height: 8px;
background-color: #5a4030;
z-index: 4;
}
.m80-spark
{
position: absolute;
top: -9px;
left: 7px;
width: 5px;
height: 5px;
background-color: #ff9020;
border-radius: 50%;
z-index: 5;
animation-name: m80spark;
animation-duration: 0.25s;
animation-iteration-count: infinite;
animation-timing-function: steps( 2, end );
}
.tank-glass.m80-mode
{
border-color: #c41e1e;
}
.boom-bit
{
position: absolute;
width: 7px;
height: 7px;
pointer-events: none;
border-radius: 1px;
z-index: 6;
}
.fish-body
{
position: relative;
width: 100%;
height: 100%;
border-radius: 40px;
overflow: hidden;
border: 1px solid #00000055;
}
.fish-fin
{
position: absolute;
left: -6px;
top: 20%;
width: 12px;
height: 60%;
border-radius: 4px;
opacity: 0.9;
}
// ----- Trained stats: readable in-tank tells -----
// SPD — motion streaks trailing behind the swim direction (left of body when facing right).
.stat-spd-trail
{
position: absolute;
pointer-events: none;
z-index: 2;
border-radius: 2px;
background-color: #80d0ff;
opacity: 0.35;
}
.stat-spd-trail.t1
{
left: -10px;
top: 42%;
width: 12px;
height: 3px;
opacity: 0.4;
}
.stat-spd-trail.t2
{
left: -18px;
top: 48%;
width: 16px;
height: 2px;
opacity: 0.3;
background-color: #a8e0ff;
}
.stat-spd-trail.t3
{
left: -26px;
top: 36%;
width: 20px;
height: 2px;
opacity: 0.22;
background-color: #c0ecff;
animation-name: spdtrail;
animation-duration: 0.35s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
animation-direction: alternate;
}
.fish.spd-2 .stat-spd-trail.t1,
.fish.spd-3 .stat-spd-trail.t1
{
width: 14px;
opacity: 0.5;
box-shadow: 0 0 4px #60c0ff;
}
.fish.spd-3 .fish-body,
.fish.spd-3.has-sprite .fish-sprite
{
// Slight cyan edge — torpedo look
box-shadow: -2px 0 0 #40a8e088;
}
// AGI — extra fin flares that flutter faster at higher tiers.
.stat-agi-fin
{
position: absolute;
pointer-events: none;
z-index: 3;
background-color: #e8b050;
opacity: 0.55;
border-radius: 3px;
}
.stat-agi-fin.top
{
right: 28%;
top: -4px;
width: 10px;
height: 8px;
transform: rotate( -25deg );
}
.stat-agi-fin.bot
{
right: 28%;
bottom: -4px;
width: 10px;
height: 8px;
transform: rotate( 25deg );
}
.stat-agi-fin.mid
{
left: -8px;
top: 30%;
width: 8px;
height: 40%;
opacity: 0.45;
background-color: #f0c060;
}
.fish.agi-2 .stat-agi-fin,
.fish.agi-3 .stat-agi-fin
{
animation-name: agiflick;
animation-duration: 0.28s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
animation-direction: alternate;
}
.fish.agi-3 .stat-agi-fin
{
animation-duration: 0.16s;
opacity: 0.75;
box-shadow: 0 0 4px #ffc04088;
}
.fish.agi-2:not( .has-sprite ) .fish-fin,
.fish.agi-3:not( .has-sprite ) .fish-fin
{
width: 16px;
left: -10px;
}
// END — plate bulk / armored midsection.
.stat-end-plate
{
position: absolute;
left: 18%;
right: 22%;
top: 28%;
bottom: 28%;
pointer-events: none;
z-index: 2;
border: 2px solid #40a060aa;
border-radius: 40%;
opacity: 0.55;
}
.stat-end-band
{
position: absolute;
left: 22%;
right: 26%;
top: 48%;
height: 4px;
pointer-events: none;
z-index: 3;
background-color: #50c87888;
border-radius: 2px;
}
.fish.end-2 .stat-end-plate,
.fish.end-3 .stat-end-plate
{
border-width: 3px;
opacity: 0.7;
}
.fish.end-3 .stat-end-plate
{
border-color: #60e090;
box-shadow: inset 0 0 6px #40a06055;
}
.fish.end-2:not( .has-sprite ) .fish-body,
.fish.end-3:not( .has-sprite ) .fish-body
{
border: 2px solid #30805088;
}
@keyframes spdtrail
{
from { opacity: 0.12; left: -22px; }
to { opacity: 0.35; left: -28px; }
}
@keyframes agiflick
{
from { opacity: 0.35; }
to { opacity: 0.8; }
}
.fish-eye
{
position: absolute;
right: 18%;
top: 28%;
width: 5px;
height: 5px;
border-radius: 50%;
background-color: #101018;
}
.fish-belly
{
position: absolute;
left: 20%;
right: 20%;
bottom: 10%;
height: 30%;
background-color: #ffffff;
opacity: 0.18;
border-radius: 20px;
}
.tank-legend
{
flex-direction: row;
align-items: center;
justify-content: center;
margin-top: 8px;
width: 1280px;
}
.legend-item
{
flex-direction: row;
align-items: center;
margin-left: 12px;
margin-right: 12px;
}
.legend-swatch
{
width: 14px;
height: 10px;
border-radius: 4px;
margin-right: 6px;
border: 1px solid #00000066;
}
.legend-name
{
font-size: 11px;
font-weight: 600;
color: #8aa8b8;
letter-spacing: 1px;
}
.tank-actions
{
margin-top: 10px;
flex-direction: row;
justify-content: center;
flex-wrap: wrap;
width: 1280px;
}
.tank-actions .btn
{
min-width: 140px;
margin-bottom: 0;
margin-left: 6px;
margin-right: 6px;
}
.pellet
{
position: absolute;
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #e8c060;
border: 1px solid #8a6020;
pointer-events: none;
}
// ----- Dogecoin explainer (Cold Chip click) -----
.econ-help-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -300px;
margin-top: -260px;
width: 600px;
max-height: 520px;
padding: 16px 18px 12px 18px;
background-color: #102838;
border: 3px solid #4a9abc;
border-radius: 14px;
flex-direction: column;
// Above dim backdrop (70)
z-index: 81;
pointer-events: all;
overflow: hidden;
}
.playing.nochill .econ-help-panel
{
background-color: #1a1018;
border-color: #8b4a5a;
}
.econ-help-header
{
flex-direction: row;
align-items: center;
width: 100%;
margin-bottom: 10px;
flex-shrink: 0;
}
.econ-help-kicker
{
font-size: 10px;
font-weight: 700;
letter-spacing: 1px;
color: #6a9ab0;
text-transform: uppercase;
margin-right: 10px;
}
.econ-help-title
{
font-size: 20px;
font-weight: 800;
color: #ffd24a;
flex-grow: 1;
}
.econ-help-scroll
{
flex-direction: column;
width: 100%;
overflow: scroll;
flex-grow: 1;
min-height: 0;
}
.econ-help-block
{
flex-direction: column;
width: 100%;
padding: 10px 12px;
margin-bottom: 8px;
background-color: #0a2030;
border: 1px solid #2a5060;
border-radius: 10px;
flex-shrink: 0;
}
.playing.nochill .econ-help-block
{
background-color: #140c12;
border-color: #503038;
}
.econ-help-h
{
font-size: 13px;
font-weight: 800;
color: #e8f4ff;
margin-bottom: 4px;
}
.econ-help-p
{
font-size: 12px;
color: #a8c0d0;
line-height: 17px;
}
.econ-help-foot
{
margin-top: 8px;
font-size: 10px;
color: #6a8898;
text-align: center;
flex-shrink: 0;
}
// ----- DARK WEB marketplace (shop) -----
// Sibling backdrop + absolute panel (same pattern as battle / inject).
.shop-backdrop
{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: #040810;
opacity: 0.78;
// Below modal panels (train/inject/battle/shop use 80+)
z-index: 70;
pointer-events: all;
}
.shop-backdrop.shop-dim
{
z-index: 79;
}
.shop-backdrop.battle-dim
{
z-index: 70;
}
// Ensure battle chrome is clickable above the dim
.battle-panel .cq-btn,
.battle-panel .battle-row,
.battle-panel .battle-chip
{
pointer-events: all;
}
.shop-panel
{
position: absolute;
left: 50%;
top: 50%;
margin-left: -460px;
margin-top: -280px;
width: 920px;
height: 560px;
padding: 14px 18px 12px 18px;
background-color: #0a1418f5;
border: 1px solid #2a6048;
border-radius: 12px;
flex-direction: column;
flex-shrink: 0;
z-index: 80;
overflow: hidden;
pointer-events: all;
}
.shop-panel.cq-shop.darkweb
{
background-color: #0a1410;
border-color: #3a9060;
}
.playing.nochill .shop-panel
{
background-color: #120a10;
border-color: #6a3040;
}
.dw-topbar
{
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 100%;
flex-shrink: 0;
margin-bottom: 8px;
padding-bottom: 8px;
border-bottom: 1px solid #1a4030;
}
.dw-topbar-left
{
flex-direction: row;
align-items: center;
}
.dw-onion
{
font-size: 10px;
font-weight: 800;
letter-spacing: 1px;
color: #102018;
background-color: #50c878;
padding: 3px 6px;
border-radius: 4px;
margin-right: 8px;
}
.dw-site
{
font-size: 13px;
font-weight: 700;
color: #90e0b0;
}
.dw-topbar-mid
{
font-size: 11px;
color: #5a8870;
letter-spacing: 0.5px;
}
.dw-topbar-right
{
flex-direction: row;
align-items: center;
}
.dw-wallet
{
font-size: 11px;
font-weight: 700;
color: #ffd24a;
margin-right: 10px;
padding: 4px 8px;
background-color: #1a2010;
border: 1px solid #6a8040;
border-radius: 6px;
}
.shop-header
{
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 100%;
flex-shrink: 0;
margin-bottom: 6px;
}
.shop-title
{
font-size: 22px;
font-weight: 800;
letter-spacing: 2px;
color: #b8f0d0;
white-space: nowrap;
}
.dw-status-pill
{
font-size: 10px;
font-weight: 700;
color: #70a888;
letter-spacing: 0.5px;
padding: 3px 8px;
border: 1px solid #2a5040;
border-radius: 10px;
}
.shop-close
{
min-width: 90px;
margin-bottom: 0;
}
.shop-msg
{
font-size: 12px;
color: #8aadc0;
margin-bottom: 8px;
flex-shrink: 0;
}
.shop-msg.dw-msg
{
color: #70c898;
background-color: #0c1c14;
border: 1px solid #1a4030;
border-radius: 6px;
padding: 6px 10px;
}
// Escrow / listing modal
.dw-checkout
{
flex-direction: column;
width: 100%;
flex-shrink: 0;
margin-bottom: 10px;
padding: 12px 14px;
background-color: #101808;
border: 2px solid #c0a040;
border-radius: 10px;
}
.dw-checkout-kicker
{
font-size: 10px;
font-weight: 800;
letter-spacing: 1.5px;
color: #c0a040;
margin-bottom: 4px;
}
.dw-checkout-title
{
font-size: 16px;
font-weight: 800;
color: #f0f8e8;
margin-bottom: 4px;
}
.dw-checkout-note
{
font-size: 11px;
color: #a0b890;
margin-bottom: 8px;
}
.dw-checkout-meta
{
flex-direction: row;
flex-wrap: wrap;
margin-bottom: 8px;
}
.dw-checkout-meta span
{
font-size: 11px;
font-weight: 700;
color: #d0e0c0;
background-color: #1a2810;
border: 1px solid #3a5030;
border-radius: 4px;
padding: 3px 8px;
margin-right: 6px;
margin-bottom: 4px;
}
.dw-checkout-log
{
font-size: 12px;
color: #80e0a0;
margin-bottom: 10px;
min-height: 18px;
}
.dw-checkout-actions
{
flex-direction: row;
align-items: center;
}
.dw-checkout-actions .cq-btn
{
margin-right: 8px;
margin-bottom: 0;
}
.dw-spinner
{
font-size: 12px;
font-weight: 700;
color: #90c070;
margin-right: 12px;
}
.dw-checkout-foot
{
font-size: 9px;
color: #5a7050;
margin-top: 8px;
letter-spacing: 0.5px;
}
.shop-list
{
flex-direction: column;
flex-grow: 1;
width: 100%;
overflow: scroll;
padding-right: 6px;
pointer-events: all;
}
.shop-row
{
flex-direction: row;
align-items: center;
width: 100%;
min-height: 44px;
padding-top: 6px;
padding-bottom: 6px;
border-top: 1px solid #1a3028;
flex-shrink: 0;
pointer-events: all;
}
.shop-row.buyable
{
cursor: pointer;
}
// Entire row is one hit target — children must NOT re-fire Buy (double place).
.shop-row.buyable .shop-col,
.shop-row.buyable .cq-btn
{
pointer-events: none;
}
.shop-row.buyable:hover
{
background-color: #143028;
}
.shop-row.header
{
cursor: default;
}
.shop-row.header
{
border-top: none;
opacity: 0.6;
min-height: 24px;
}
.shop-row.shady
{
background-color: #141008;
border-top-color: #403018;
}
.shop-col
{
font-size: 12px;
font-weight: 600;
color: #c8d8c8;
align-items: center;
flex-shrink: 0;
}
.shop-col.name
{
width: 220px;
flex-direction: row;
white-space: nowrap;
}
.shop-col.rate
{
width: 360px;
color: #70c070;
white-space: nowrap;
}
.shop-col.cost
{
width: 100px;
color: #ffd24a;
white-space: nowrap;
}
.shop-col.act
{
width: 100px;
justify-content: flex-end;
}
.shop-col.act .btn
{
margin-bottom: 0;
}
.shop-hint
{
flex-shrink: 0;
margin-top: 8px;
font-size: 10px;
color: #5a4a58;
letter-spacing: 1px;
text-align: center;
}
.shop-hint.dw-hint
{
color: #4a6858;
}
}
@keyframes warnpulse
{
0%
{
border-color: #3a7a98;
}
50%
{
border-color: #e0b040;
}
100%
{
border-color: #3a7a98;
}
}
@keyframes m80slap
{
0%
{
// start slightly above, then land
top: -16px;
opacity: 0.2;
}
60%
{
top: -4px;
opacity: 1;
}
100%
{
top: -6px;
opacity: 1;
}
}
@keyframes m80spark
{
0%
{
background-color: #ff9020;
opacity: 1;
}
50%
{
background-color: #ffe060;
opacity: 0.4;
}
100%
{
background-color: #ff9020;
opacity: 1;
}
}
@keyframes boomshock
{
0%
{
width: 40px;
height: 40px;
margin-left: -20px;
margin-top: -20px;
opacity: 0.95;
border-color: #ffffff;
}
100%
{
width: 420px;
height: 420px;
margin-left: -210px;
margin-top: -210px;
opacity: 0;
border-color: #ff4020;
}
}
@keyframes methpulse
{
0%
{
// slightly larger / tense
opacity: 1;
}
50%
{
opacity: 0.92;
}
100%
{
opacity: 1;
}
}
@keyframes methaura
{
0%
{
opacity: 0.35;
border-color: #ff40a0;
}
50%
{
opacity: 0.8;
border-color: #ffd0ff;
}
100%
{
opacity: 0.35;
border-color: #ff40a0;
}
}
@keyframes stonedwobble
{
0%
{
opacity: 0.88;
}
50%
{
opacity: 1;
}
100%
{
opacity: 0.88;
}
}
@keyframes stonedaura
{
0%
{
opacity: 0.25;
border-color: #70d050;
}
33%
{
opacity: 0.55;
border-color: #c060e0;
}
66%
{
opacity: 0.4;
border-color: #60c0e0;
}
100%
{
opacity: 0.25;
border-color: #70d050;
}
}
@keyframes stonedspark
{
0%
{
opacity: 0.3;
}
50%
{
opacity: 1;
}
100%
{
opacity: 0.3;
}
}
@keyframes wdshiver
{
0%
{
opacity: 0.25;
}
50%
{
opacity: 0.7;
}
100%
{
opacity: 0.25;
}
}