:root{
  --ink:#0e2a47;--muted:#5f768c;--cream:#f6fbff;--paper:#fbfdff;--sky:#9fd3ff;--sky2:#d7ecff;--blue:#1c7bc9;--mint-accent:#f6ba22;--mint-soft:#fff1c9;--mint:#ffe28f;--sky-accent:#a9d1ef;--line:#d9e8f4;--good:#1f775f;--warn:#8c5b0e;--bad:#b84259;--focus:#1c7bc9;--shadow:0 16px 40px rgba(33,91,133,.14);--soft:0 8px 22px rgba(33,91,133,.09)
}
*{box-sizing:border-box}html{min-width:320px;background:#f2faff;scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:var(--hv-font);background:var(--hv-grad-page);background-attachment:fixed;min-height:100vh}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.back-link:hover{color:var(--blue);text-decoration:underline;text-underline-offset:3px}.dialog-close:hover,.mini-action:hover{background:#dcebf7}.save-indicator:hover{border-color:#8bb4d4;background:#f4fbff}.tab-btn:hover{border-color:#8bb4d4;background:#f2faff}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:9999;left:12px;top:-80px;background:#fff;color:var(--ink);padding:10px 14px;border-radius:10px}.skip-link:focus{top:12px}.sitebar{position:sticky;top:0;z-index:80;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;min-height:62px;padding:10px clamp(14px,3vw,32px);background:rgba(247,252,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid rgba(171,202,226,.75)}.back-link{justify-self:start;color:var(--ink);text-decoration:none;font-weight:850}.mini-brand{display:flex;align-items:center;gap:8px}.mini-brand strong{letter-spacing:-.03em}.version-label{justify-self:end;color:var(--muted);font-size:.72rem;font-weight:900;letter-spacing:.08em}.eyebrow{margin:0 0 8px;color:var(--blue);font-size:.76rem;font-weight:950;letter-spacing:.13em}.auth-screen{padding:clamp(30px,6vw,76px) clamp(16px,4vw,52px)}.auth-hero{max-width:1180px;margin:auto;display:grid;grid-template-columns:minmax(0,.85fr) minmax(420px,1.15fr);gap:clamp(28px,5vw,64px);align-items:center}.auth-copy h1{margin:0;font-size:clamp(2.6rem,7vw,5.5rem);line-height:.98;letter-spacing:-.065em}.auth-copy h1 span{color:var(--blue)}.auth-lead{max-width:640px;margin:24px 0 0;color:var(--muted);font-size:1.03rem;line-height:1.8}.auth-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}.btn{border:1px solid var(--line);border-radius:14px;min-height:48px;padding:11px 18px;background:#fff;color:var(--ink);font-weight:900;cursor:pointer;box-shadow:var(--soft);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{border-color:transparent;background:var(--hv-grad-sky);color:#fff;box-shadow:0 10px 24px rgba(28,123,201,.28)}.btn.secondary{background:#f6fbff}.btn.wide{width:100%}.auth-note{display:flex;align-items:center;gap:7px;margin-top:16px;color:var(--muted);font-size:.83rem}.auth-preview{position:relative}.preview-room{position:relative;overflow:hidden;border:7px solid rgba(255,255,255,.9);border-radius:28px;aspect-ratio:16/9;box-shadow:0 28px 70px rgba(29,91,135,.20);background:#d8eaf7}.preview-room>img:first-child{width:100%;height:100%;object-fit:cover}.preview-uth{position:absolute;left:50%;bottom:7%;width:26%;transform:translateX(-50%);filter:drop-shadow(0 8px 8px rgba(28,78,110,.18))}.preview-card{position:absolute;right:-12px;bottom:-22px;display:flex;flex-direction:column;gap:2px;padding:13px 16px;border:1px solid #cfdfec;border-radius:16px;background:rgba(251,253,255,.95);box-shadow:var(--shadow)}.preview-card strong{font-size:.88rem}.preview-card span{color:var(--muted);font-size:.75rem}.auth-dialog,.game-dialog{border:0;padding:0;background:transparent}.auth-dialog::backdrop,.game-dialog::backdrop{background:rgba(17,52,78,.36);backdrop-filter:blur(4px)}.dialog-card{position:relative;width:min(92vw,440px);padding:30px;border:1px solid rgba(255,255,255,.8);border-radius:24px;background:#fbfdff;box-shadow:0 28px 70px rgba(27,77,111,.25)}.dialog-card h2{margin:0 0 6px;font-size:1.8rem;letter-spacing:-.04em}.dialog-card>p:not(.eyebrow):not(.form-status){margin:0 0 20px;color:var(--muted);line-height:1.6}.dialog-card label{display:grid;gap:7px;margin:12px 0;font-size:.84rem;font-weight:900}.dialog-card input{width:100%;min-height:48px;border:1px solid #c6dae9;border-radius:12px;padding:0 13px;background:#fff;color:var(--ink);outline:none}.dialog-card input:focus-visible{border-color:var(--focus);outline:3px solid var(--focus);outline-offset:2px;box-shadow:none}.dialog-close{position:absolute;top:12px;right:12px;width:42px;height:42px;border:0;border-radius:50%;background:#eaf3fa;color:var(--ink);font-size:1.6rem;cursor:pointer}.form-status{min-height:21px;margin:10px 0;color:var(--bad);font-size:.83rem;font-weight:800}.game-screen{max-width:1500px;margin:auto;padding:18px clamp(12px,2.5vw,32px) 34px}.game-topbar{display:grid;grid-template-columns:auto minmax(220px,1fr) auto auto;gap:10px;align-items:center;margin-bottom:14px}.identity-card,.level-card,.money-card,.save-indicator{min-height:64px;border:1px solid rgba(196,218,234,.92);border-radius:18px;background:rgba(251,253,255,.92);box-shadow:var(--soft)}.identity-card,.money-card{display:flex;align-items:center;gap:10px;padding:10px 14px}.identity-card>div{display:grid}.identity-card strong{font-size:1.15rem}.tiny-label{font-size:.66rem;font-weight:950;letter-spacing:.12em;color:#315f84}.hud-icon{width:42px;height:42px;object-fit:contain}.level-card{display:grid;align-content:center;gap:7px;padding:10px 14px}.level-line{display:flex;justify-content:space-between;gap:12px;font-size:.83rem;font-weight:900}.exp-track{height:9px;border-radius:999px;background:#dce8f2;overflow:hidden}.exp-fill{height:100%;width:0;background:linear-gradient(90deg,#ffd156,#f6ba22);border-radius:inherit;transition:width .35s ease}.money-card strong{font-size:1.12rem}.money-card span{font-size:.75rem;color:var(--muted);font-weight:800}.save-indicator{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px 13px;color:var(--ink);cursor:pointer}.save-indicator img{width:30px;height:30px}.save-indicator span{font-size:.78rem;font-weight:900}.save-indicator.is-error{color:var(--bad);border-color:#e1a4ad}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:14px;align-items:start}.room-column,.stats-panel{border:1px solid rgba(196,218,234,.92);border-radius:24px;background:rgba(251,253,255,.92);box-shadow:var(--soft);overflow:hidden}.scene-frame{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#d5e7f4}.scene{position:absolute;width:1600px;height:900px;transform-origin:top left;overflow:hidden}.room-bg{position:absolute;inset:0;width:1600px;height:900px;object-fit:cover;z-index:0;user-select:none}.scene-assets{position:absolute;inset:0;z-index:10}.scene-asset{position:absolute;pointer-events:none;user-select:none;image-rendering:auto;filter:drop-shadow(0 7px 5px rgba(28,73,104,.14))}.uth-asset{z-index:60}.action-prop{z-index:50}.uth-hitbox{position:absolute;z-index:70;width:230px;height:220px;left:820px;top:705px;transform:translate(-50%,-90%);border:0;background:transparent;cursor:pointer;border-radius:50%}.uth-hitbox:focus-visible{outline:5px solid rgba(255,255,255,.9);box-shadow:0 0 0 8px rgba(47,120,216,.55)}.scene-toast{position:absolute;z-index:100;left:50%;top:10%;transform:translateX(-50%) translateY(-8px);max-width:70%;padding:9px 14px;border-radius:999px;background:rgba(255,255,255,.94);box-shadow:var(--soft);font-size:19px;font-weight:950;opacity:0;pointer-events:none;transition:.2s ease}.scene-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}.room-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 15px}.room-caption>div:first-child{display:grid;gap:2px}.room-caption strong{font-size:.9rem}.room-caption span{color:var(--muted);font-size:.73rem}.job-mini{display:flex!important;align-items:center;gap:8px;border-radius:12px;padding:7px 8px 7px 11px;background:#e9f7f5}.job-mini strong{min-width:50px}.mini-action{border:0;border-radius:9px;min-height:34px;padding:5px 9px;background:#fff;color:var(--ink);font-weight:900;cursor:pointer}.stats-panel{padding:16px}.panel-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.panel-title-row h2{margin:2px 0 0;font-size:1.25rem}.panel-title-row img{width:48px;height:48px}.stats-list{display:grid;gap:12px}.stat-row{display:grid;gap:5px}.stat-head{display:flex;justify-content:space-between;gap:8px;font-size:.78rem;font-weight:900}.stat-track{height:10px;border-radius:999px;background:#d9e6f0;overflow:hidden}.stat-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#5cb4f2,#1c7bc9);transition:width .35s ease}.stat-fill.low{background:linear-gradient(90deg,#d59a54,#c34b61)}.quick-tip{margin-top:16px;padding:11px;border-radius:14px;background:#edf8f6;color:var(--muted);font-size:.76rem;line-height:1.55}.game-menu{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:14px}.game-menu button{min-height:82px;border:1px solid rgba(196,218,234,.96);border-radius:20px;background:rgba(251,253,255,.95);color:var(--ink);box-shadow:var(--soft);cursor:pointer;font-weight:950;transition:.15s ease}.game-menu button:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.game-menu img{display:block;width:45px;height:45px;object-fit:contain;margin:0 auto 2px}.panel-shell{width:min(1100px,95vw);max-height:min(88vh,860px);display:flex;flex-direction:column;border:1px solid #c9dceb;border-radius:26px;background:#fbfdff;box-shadow:0 28px 70px rgba(27,77,111,.22);overflow:hidden}.panel-header{position:relative;padding:22px 70px 16px 24px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#f5fbff,#fbfdff)}.panel-header h2{margin:0;font-size:1.7rem;letter-spacing:-.04em}.panel-header p:last-child{margin:5px 0 0;color:var(--muted);font-size:.85rem}.panel-body{padding:20px;overflow:auto}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.content-card{position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:18px;padding:12px;background:#fff;box-shadow:0 5px 14px rgba(31,83,118,.08)}.content-card.locked{background:#eff4f7;color:var(--muted)}.content-card img{width:100%;aspect-ratio:1;object-fit:contain;border-radius:12px;background:#f5fbff}.content-card h3{margin:8px 0 2px;font-size:.96rem}.content-card p{margin:0;color:var(--muted);font-size:.72rem;line-height:1.5}.content-card .price{display:flex;align-items:center;gap:4px;margin-top:7px;font-size:.83rem;font-weight:950}.content-card .price img{width:20px;height:20px;background:transparent}.content-card .btn{margin-top:auto;min-height:40px;padding:8px 10px;font-size:.78rem;box-shadow:none}.shop-quantity-control{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;margin:9px 0 8px;color:var(--ink);font-size:.72rem;font-weight:900}.shop-quantity-label{white-space:nowrap}.shop-quantity-control input{width:100%;min-width:0;min-height:38px;border:1px solid #c6dae9;border-radius:10px;padding:6px 9px;background:#fff;color:var(--ink);font-weight:900;font-variant-numeric:tabular-nums;outline:none}.shop-quantity-control input:focus-visible{border-color:var(--focus);outline:3px solid var(--focus);outline-offset:2px}.shop-quantity-control input:disabled{opacity:.55;cursor:not-allowed;background:#f2f5f8}@media(max-width:520px){.shop-quantity-control{grid-template-columns:1fr;gap:5px}.shop-quantity-control input{min-height:42px}}.lock-badge{position:absolute;top:10px;right:10px;padding:5px 8px;border-radius:999px;background:rgba(25,64,91,.86);color:#fff;font-size:.65rem;font-weight:950}.tabs{display:flex;gap:7px;overflow:auto;padding:1px 1px 12px}.tab-btn{white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:8px 12px;background:#fff;color:var(--ink);font-weight:900;cursor:pointer}.tab-btn.active{background:#2468bd;color:#fff;border-color:#2468bd}.inventory-list,.decorate-list,.settings-list{display:grid;gap:10px}.inventory-row,.slot-row,.setting-row{display:grid;grid-template-columns:68px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:16px;padding:10px;background:#fff}.inventory-row img,.slot-row img{width:68px;height:68px;object-fit:contain}.inventory-row h3,.slot-row h3,.setting-row h3{margin:0 0 3px;font-size:.95rem}.inventory-row p,.slot-row p,.setting-row p{margin:0;color:var(--muted);font-size:.75rem}.row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.row-actions .btn{min-height:40px;padding:7px 10px;font-size:.76rem;box-shadow:none}.job-card{min-height:100%}.job-meta{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:7px 0 10px;font-size:.72rem}.job-meta span{padding:5px 7px;border-radius:9px;background:#edf4fa}.job-progress{padding:14px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,#edf7ff,#e7f8f2);margin-bottom:14px}.job-progress strong{display:block;font-size:1.1rem}.job-progress p{margin:4px 0 0;color:var(--muted);font-size:.8rem}.empty-state{padding:34px 18px;text-align:center;color:var(--muted)}.empty-state strong{display:block;color:var(--ink);margin-bottom:5px}.setting-row{grid-template-columns:minmax(0,1fr) auto}.danger{color:#ad4054!important;border-color:#e9b9c2!important}.toast-stack{position:fixed;z-index:200;right:16px;bottom:16px;display:grid;gap:8px;max-width:min(360px,calc(100vw - 32px))}.toast{padding:12px 14px;border:1px solid #cfdfec;border-radius:14px;background:rgba(251,253,255,.96);box-shadow:var(--shadow);font-size:.82rem;font-weight:850;animation:toast-in .18s ease both}.toast.good{border-color:#a8e2cf}.toast.bad{border-color:#e7b1bb}.toast strong{display:block;margin-bottom:2px}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}}
@media(max-width:980px){.auth-hero{grid-template-columns:1fr}.auth-preview{max-width:760px}.game-layout{grid-template-columns:1fr}.stats-panel{display:grid;grid-template-columns:auto 1fr;gap:18px}.panel-title-row{align-items:start}.quick-tip{display:none}.card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* 효과음 켜기/끄기 버튼 (public/assets/sfx/sfx.js 가 data-sfx-toggle 을 자동 연결) — 어스 키우기·거래소 공용 */
.sitebar-tools{justify-self:end;display:flex;align-items:center;gap:10px}.sfx-toggle{width:38px;height:38px;flex:0 0 auto;display:inline-grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--blue);cursor:pointer;box-shadow:var(--soft);transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}.sfx-toggle:hover{transform:translateY(-1px);border-color:#8bb4d4}.sfx-toggle svg{width:19px;height:19px;overflow:visible}.sfx-toggle .sfx-wave,.sfx-toggle .sfx-mute{transition:opacity .15s ease}.sfx-toggle .sfx-mute{opacity:0}.sfx-toggle[aria-pressed=false]{color:var(--muted);background:#f2f6f9}.sfx-toggle[aria-pressed=false] .sfx-wave{opacity:0}.sfx-toggle[aria-pressed=false] .sfx-mute{opacity:1}@media(prefers-reduced-motion:reduce){.sfx-toggle,.sfx-toggle *{transition:none}}@media(forced-colors:active){.sfx-toggle{border-color:ButtonText;color:ButtonText}}
@media(max-width:760px){.sitebar{grid-template-columns:1fr auto}.mini-brand{display:none}.game-topbar{grid-template-columns:1fr 1fr}.level-card{grid-column:1/-1;grid-row:2}.save-indicator{grid-column:1/-1}.game-menu{grid-template-columns:repeat(5,1fr);gap:6px}.game-menu button{min-height:70px;border-radius:15px;font-size:.76rem}.game-menu img{width:36px;height:36px}.stats-panel{display:block}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-row,.slot-row{grid-template-columns:56px minmax(0,1fr)}.inventory-row img,.slot-row img{width:56px;height:56px}.row-actions{grid-column:1/-1;justify-content:stretch}.row-actions .btn{flex:1}.room-caption{align-items:flex-start;flex-direction:column}.job-mini{width:100%;justify-content:space-between}}
@media(max-width:520px){.preview-card{max-width:calc(100% - 16px)}.panel-shell{width:100%;max-height:calc(100dvh - 24px)}.preview-uth{width:28%;bottom:6%}.auth-screen{padding-top:30px}.auth-copy h1{font-size:2.65rem}.auth-actions{display:grid}.auth-actions .btn{width:100%}.preview-card{right:8px}.game-screen{padding-inline:8px}.game-topbar{gap:6px}.identity-card,.money-card,.save-indicator,.level-card{border-radius:14px;min-height:58px}.identity-card{padding:8px}.identity-card .hud-icon{width:34px;height:34px}.identity-card strong{font-size:.95rem}.money-card{padding:8px}.money-card .hud-icon{width:32px;height:32px}.save-indicator img{width:26px;height:26px}.scene-frame{border-radius:0}.room-column{border-radius:18px}.game-menu{position:static;z-index:auto;margin-top:12px;padding:5px;border-radius:18px;background:rgba(235,243,250,.90);backdrop-filter:blur(10px)}.game-menu button{min-width:0;padding:6px 2px}.game-menu img{width:32px;height:32px}.panel-body{padding:12px}.panel-header{padding-left:16px}.card-grid{gap:8px}.content-card{padding:8px;border-radius:14px}.content-card h3{font-size:.84rem}.content-card .btn{font-size:.72rem}.dialog-card{padding:25px 18px}.toast-stack{right:10px;bottom:88px}.stats-list{grid-template-columns:1fr 1fr;gap:10px}}

@media(forced-colors:active){.btn,.game-menu button,.save-indicator,.dialog-close,.mini-action,.tab-btn,.content-card,.inventory-row,.slot-row,.setting-row,.panel-shell{border:1px solid CanvasText}.btn.primary,.tab-btn.active{background:ButtonFace;color:ButtonText}.stat-fill,.exp-fill{background:Highlight}}

/* uth ranking */
.game-menu{grid-template-columns:repeat(6,1fr)}
.ranking-summary{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,#f3faff,#eaf9f5)}
.ranking-summary strong{font-size:.96rem}.ranking-summary span{color:var(--muted);font-size:.76rem;text-align:right}
.uth-ranking-wrap{overflow:auto;border:1px solid var(--line);border-radius:18px;background:#fff}
.uth-ranking-table{width:100%;border-collapse:collapse;min-width:900px}
.uth-ranking-table th,.uth-ranking-table td{padding:12px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:.8rem;line-height:1.5}
.uth-ranking-table th{position:sticky;top:0;z-index:1;background:#eff6fb;color:#4d697e;font-size:.74rem;font-weight:950;white-space:nowrap}
.uth-ranking-table tbody tr:last-child td{border-bottom:0}.uth-ranking-table tbody tr.mine{background:#eaf8f3}.uth-ranking-table tbody tr:hover{background:#f5fafd}.uth-ranking-table tbody tr.mine:hover{background:#dff3e9}
.rank-cell{font-weight:950;white-space:nowrap}.mine-badge{display:inline-block;margin-left:7px;padding:2px 7px;border-radius:999px;background:#2468bd;color:#fff;font-size:.64rem;font-weight:950;vertical-align:middle}
.inventory-summary{min-width:210px;color:#506b7f}.ranking-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}.ranking-pager .btn{min-width:94px;box-shadow:none}.ranking-pager span{font-size:.8rem;font-weight:900;color:var(--muted)}
@media(max-width:760px){.game-menu{grid-template-columns:repeat(3,1fr)}.ranking-summary{align-items:flex-start;flex-direction:column}.ranking-summary span{text-align:left}.uth-ranking-wrap{border:0;overflow:visible;background:transparent}.uth-ranking-table{min-width:0;display:block}.uth-ranking-table thead{display:none}.uth-ranking-table tbody{display:grid;gap:10px}.uth-ranking-table tr{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:16px;padding:10px;background:#fff}.uth-ranking-table tbody tr.mine{background:#eaf8f3}.uth-ranking-table td{display:grid;gap:3px;padding:7px 8px;border:0!important;font-size:.78rem}.uth-ranking-table td::before{content:attr(data-label);color:var(--muted);font-size:.64rem;font-weight:950}.uth-ranking-table .inventory-summary{grid-column:1/-1;min-width:0}.ranking-pager{position:sticky;bottom:0;padding:10px;background:rgba(251,253,255,.95);backdrop-filter:blur(8px)}}

/* Earthcoin spot market integrated into the existing UTH Life panel system. */
.game-menu{grid-template-columns:repeat(7,minmax(0,1fr))}
.earthcoin-panel{display:grid;gap:14px;min-width:0}
.earthcoin-market-card{min-width:0;padding:16px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(145deg,#f7fcff,#eefaf6);box-shadow:0 8px 22px rgba(31,83,118,.07)}
.earthcoin-market-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}
.earthcoin-market-head strong{display:block;margin-top:2px;font-size:clamp(1.55rem,3vw,2.15rem);letter-spacing:-.04em;color:#205f9f;font-variant-numeric:tabular-nums}
.earthcoin-market-head small{display:block;margin-top:3px;color:var(--muted);font-weight:800}
.earthcoin-live-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #a9dacd;border-radius:999px;background:#eaf9f5;color:#256957;font-size:.72rem;font-weight:950;white-space:nowrap}
.earthcoin-live-badge span{width:8px;height:8px;border-radius:50%;background:#2e8c73;box-shadow:0 0 0 4px rgba(46,140,115,.12)}
.earthcoin-chart{display:block;width:100%;min-height:190px;border:1px solid #d5e3ee;border-radius:16px;background:#fbfdff;overflow:visible}
.earthcoin-chart-axis{stroke:#c8dae8;stroke-width:1.4}
.earthcoin-chart-line{stroke:#2a6ebc;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.earthcoin-chart-line.down{stroke:#b84259}
.earthcoin-chart-point{fill:#4ba995;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}
.earthcoin-chart-point.latest{fill:#2468bd;stroke-width:3}
.earthcoin-chart-empty{fill:#536f80;font-size:22px;font-weight:900}
.earthcoin-chart-meta{margin-top:7px;color:var(--muted);font-size:.72rem;font-weight:800;text-align:right}
.earthcoin-portfolio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.earthcoin-portfolio>div{min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:#fff}
.earthcoin-portfolio span{display:block;color:var(--muted);font-size:.7rem;font-weight:900}
.earthcoin-portfolio strong{display:block;margin-top:3px;font-size:1.05rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.earthcoin-trades{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.earthcoin-trade-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,210px) auto;gap:12px;align-items:end;min-width:0;padding:14px;border:1px solid var(--line);border-radius:18px;background:#fff}
.earthcoin-trade-card.buy{border-color:#b9e3d7;background:linear-gradient(135deg,#fbfffe,#effaf6)}
.earthcoin-trade-card.sell{border-color:#c7dff0;background:linear-gradient(135deg,#fbfdff,#f0f7fd)}
.earthcoin-trade-card h3{margin:2px 0 3px;font-size:1rem}
.earthcoin-trade-card p{margin:0;color:var(--muted);font-size:.72rem;line-height:1.45}
.earthcoin-trade-card label{display:grid;gap:5px;color:var(--muted);font-size:.72rem;font-weight:900}
.earthcoin-trade-card input{width:100%;min-width:0;height:44px;border:1px solid #bcd2e2;border-radius:12px;padding:0 12px;background:#fff;color:var(--ink);font-weight:900;font-variant-numeric:tabular-nums;outline:none}
.earthcoin-trade-card input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-trade-card .btn{min-height:44px;box-shadow:none;white-space:nowrap}
.earthcoin-quantity-control{display:grid;gap:7px;min-width:0}
.earthcoin-quantity-error{display:block;min-height:1.2em;color:#9f344b;font-size:.68rem;font-weight:850;line-height:1.35}
.earthcoin-quantity-error[hidden]{display:none}
.earthcoin-quick-row{display:flex;flex-wrap:wrap;gap:4px;min-width:0}
.earthcoin-quick-btn{flex:1 1 34px;min-width:34px;min-height:28px;border:1px solid #bfd3e3;border-radius:999px;padding:3px 6px;background:#fff;color:#456278;font-size:.67rem;font-weight:950;line-height:1;cursor:pointer;white-space:nowrap}
.earthcoin-quick-btn:hover:not(:disabled){border-color:#78a6ca;background:#f1f8fd;color:#245276}
.earthcoin-quick-btn:active:not(:disabled){background:#dfedf7;transform:translateY(1px)}
.earthcoin-quick-btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-quick-btn:disabled{cursor:not-allowed;opacity:.45;background:#f3f6f8;color:#7d8e9b}
.earthcoin-status{min-height:1.4em;margin:0;padding:10px 12px;border-radius:13px;background:#eef5fa;color:var(--muted);font-size:.78rem;font-weight:850;line-height:1.5;overflow-wrap:anywhere}
.earthcoin-status.pending{background:#fff5dc;color:#805a1b}
.earthcoin-chart-fetch-status{margin:4px 0;padding:8px 12px;border-radius:12px;background:#fff0f3;color:#9f344b;font-size:.77rem;font-weight:750}
.earthcoin-status.good{background:#e9f8f2;color:#1f775f}
.earthcoin-status.bad{background:#fff0f3;color:#9f344b}
.earthcoin-disclaimer{margin:0;color:var(--muted);font-size:.7rem;line-height:1.55}

@media(max-width:980px){
  .game-menu{grid-template-columns:repeat(4,minmax(0,1fr))}
  .earthcoin-trades{grid-template-columns:1fr}
}
@media(max-width:760px){
  .game-menu{grid-template-columns:repeat(3,minmax(0,1fr))}
  .earthcoin-portfolio{grid-template-columns:1fr 1fr}
  .earthcoin-portfolio>div:last-child{grid-column:1/-1}
  .earthcoin-market-head{align-items:flex-start;flex-direction:column}
  .earthcoin-chart{min-height:170px}
  .earthcoin-trade-card{grid-template-columns:minmax(0,1fr) auto}
  .earthcoin-trade-card>.earthcoin-trade-summary{grid-column:1/-1}
}
@media(max-width:520px){
  .earthcoin-market-card{padding:10px;border-radius:16px}
  .earthcoin-portfolio{grid-template-columns:1fr}
  .earthcoin-portfolio>div:last-child{grid-column:auto}
  .earthcoin-trade-card{grid-template-columns:minmax(0,1fr);padding:12px}
  .earthcoin-trade-card>.earthcoin-trade-summary{grid-column:auto}
  .earthcoin-trade-card .btn{width:100%}
  .earthcoin-chart{min-height:150px}
}

/* Earthcoin precision and daily-rate additions. */
.earthcoin-market-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.earthcoin-exchange-link{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:6px 9px;border:1px solid #bfd2e0;border-radius:9px;background:#f8fbfd;color:#375c79;text-decoration:none;font-size:.68rem;font-weight:900;white-space:nowrap}
.earthcoin-exchange-link:hover{border-color:#91b2cb;background:#eef5fb;color:#285170}
.earthcoin-exchange-link:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-price-line{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.earthcoin-daily-rate{display:inline-flex;align-items:center;min-height:28px;padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:950;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.earthcoin-daily-rate.up{background:#e7f7f1;color:#1f775f}
.earthcoin-daily-rate.down{background:#fff0f3;color:#a33850}
.earthcoin-daily-rate.flat{background:#eef3f7;color:#5a7483}
.uth-hitbox{touch-action:manipulation}

/* Earthcoin advanced chart controls */
.earthcoin-chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 10px}
.earthcoin-timeframes{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.earthcoin-timeframe-btn,.earthcoin-reset-btn,.earthcoin-indicator-toggle{min-height:34px;border:1px solid #c6d9e7;border-radius:10px;padding:6px 10px;background:#fff;color:#476276;font-size:.72rem;font-weight:900;line-height:1;cursor:pointer}
.earthcoin-timeframe-btn:hover,.earthcoin-reset-btn:hover,.earthcoin-indicator-toggle:hover{border-color:#8fb3ce;background:#f4f9fd}
.earthcoin-timeframe-btn:focus-visible,.earthcoin-reset-btn:focus-visible,.earthcoin-indicator-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-timeframe-btn.active{border-color:#397fbc;background:#eaf4ff;color:#205f9f;box-shadow:inset 0 0 0 1px rgba(57,127,188,.1)}
.earthcoin-reset-btn{white-space:nowrap;border-color:#abd6c9;background:#eef9f5;color:#256957}
.earthcoin-chart-shell{position:relative;min-width:0;overflow:hidden;border:1px solid #d6e3ed;border-radius:16px;background:#fbfdff}
.earthcoin-chart{touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;cursor:grab;overscroll-behavior:contain}
.earthcoin-chart:active{cursor:grabbing}
.earthcoin-plot-bg{fill:#fbfdff}
.earthcoin-price-scale-bg{fill:#f3f8fb}
.earthcoin-price-scale-separator{stroke:#c6d8e5;stroke-width:1.2;vector-effect:non-scaling-stroke}
.earthcoin-chart-grid{stroke:#d9e4ed;stroke-width:1;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}
.earthcoin-price-tick{fill:#62798b;font-size:10px;font-weight:800;font-variant-numeric:tabular-nums}
.earthcoin-time-tick{fill:#62798b;font-size:9.5px;font-weight:800;font-variant-numeric:tabular-nums}
.earthcoin-current-guide{stroke:#3278bc;stroke-width:1.2;stroke-dasharray:5 4;opacity:.65;vector-effect:non-scaling-stroke}
.earthcoin-limit-order-line{stroke:#e0aa13;stroke-width:1.45;stroke-dasharray:7 4;opacity:.92;vector-effect:non-scaling-stroke;pointer-events:none}.earthcoin-limit-order-label{fill:#8a6800;font-size:10px;font-weight:950;paint-order:stroke;stroke:rgba(255,255,255,.92);stroke-width:3px;stroke-linejoin:round;pointer-events:none;font-variant-numeric:tabular-nums}
.earthcoin-current-label rect{fill:#2f76ba}
.earthcoin-current-label text{fill:#fff;font-size:10px;font-weight:950;font-variant-numeric:tabular-nums}
.earthcoin-cursor-price-line{stroke:#7c8b96;stroke-width:1;stroke-dasharray:3 3;opacity:.78;vector-effect:non-scaling-stroke;pointer-events:none}
.earthcoin-cursor-price-label-bg{fill:#7c8b96;opacity:.96;pointer-events:none}
.earthcoin-cursor-price-label{fill:#fff;font-size:10px;font-weight:950;font-variant-numeric:tabular-nums;pointer-events:none}
.earthcoin-candle-wick{stroke-width:1.5;vector-effect:non-scaling-stroke}
.earthcoin-candle-wick.up{stroke:#2d8d72}.earthcoin-candle-wick.down{stroke:#b84259}
.earthcoin-candle-body.up{fill:#4ba995;stroke:#2f7f6b;stroke-width:.7;vector-effect:non-scaling-stroke}
.earthcoin-candle-body.down{fill:#d65e72;stroke:#aa3d53;stroke-width:.7;vector-effect:non-scaling-stroke}
@media (max-width:720px){
  .earthcoin-market-head-actions{width:100%;justify-content:flex-start}
  .earthcoin-chart-toolbar{align-items:flex-start;flex-direction:column}
  .earthcoin-timeframes{width:100%}
  .earthcoin-timeframe-btn{flex:1 1 calc(25% - 6px);min-width:58px}
  .earthcoin-chart-actions{align-self:flex-end}
}
@media (max-width:430px){
  .earthcoin-timeframe-btn{flex-basis:calc(33.333% - 6px);padding-inline:7px}
  .earthcoin-chart-meta{text-align:left;line-height:1.45}
}

/* Compact indicator menu, active legend, and chart polish. */
.earthcoin-chart-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:0 0 auto}
.earthcoin-indicator-control{position:relative}
.earthcoin-indicator-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;border-color:#b9cddc;background:#f7fafc;color:#496479}
.earthcoin-indicator-toggle.has-active{border-color:#9eb7ca;background:#f1f7fb;color:#325672}
.earthcoin-indicator-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#dce8f2;color:#375c78;font-size:.62rem;font-weight:950;font-variant-numeric:tabular-nums}
.earthcoin-indicator-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:8;display:grid;gap:4px;width:220px;max-width:min(220px,calc(100vw - 32px));padding:7px;border:1px solid #bfcfdc;border-radius:12px;background:#fff;box-shadow:0 10px 28px rgba(35,63,84,.15)}
.earthcoin-indicator-menu[hidden]{display:none}
.earthcoin-indicator-menu-item{display:grid;grid-template-columns:12px minmax(0,1fr) 20px;align-items:center;gap:8px;width:100%;min-height:38px;border:1px solid transparent;border-radius:9px;padding:6px 8px;background:transparent;color:#486275;text-align:left;cursor:pointer}
.earthcoin-indicator-menu-item:hover{background:#f2f7fa;border-color:#d5e1ea}
.earthcoin-indicator-menu-item:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.earthcoin-indicator-menu-item.active{background:#f7fafc;border-color:#d5e1ea;color:#274760}
.earthcoin-indicator-menu-swatch{width:10px;height:10px;border-radius:999px;background:#8295a4}
.earthcoin-indicator-menu-item.sma .earthcoin-indicator-menu-swatch{background:#a77727}
.earthcoin-indicator-menu-item.ema .earthcoin-indicator-menu-swatch{background:#7565a7}
.earthcoin-indicator-menu-item.bollinger .earthcoin-indicator-menu-swatch{background:#6f8ea5}
.earthcoin-indicator-menu-item.rsi .earthcoin-indicator-menu-swatch{background:#2f8b73}
.earthcoin-indicator-menu-item.macd .earthcoin-indicator-menu-swatch{background:#b85d73}
.earthcoin-indicator-menu-item.atr .earthcoin-indicator-menu-swatch{background:#3f72ad}
.earthcoin-indicator-menu-item.supertrend .earthcoin-indicator-menu-swatch{background:#9a6f3f}
.earthcoin-indicator-menu-copy{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}
.earthcoin-indicator-menu-copy strong{font-size:.72rem;font-weight:900;white-space:nowrap}
.earthcoin-indicator-menu-copy small{color:#788c9b;font-size:.64rem;font-weight:850;white-space:nowrap}
.earthcoin-indicator-check{color:#2d7c68;font-size:.76rem;font-weight:950;opacity:0}
.earthcoin-indicator-menu-item.active .earthcoin-indicator-check{opacity:1}
.earthcoin-indicator-legend{position:absolute;top:8px;left:9px;z-index:3;display:flex;align-items:center;gap:5px;max-width:calc(85.526% - 18px);flex-wrap:wrap;pointer-events:none}
.earthcoin-indicator-legend[hidden]{display:none}
.earthcoin-indicator-legend-item{display:inline-flex;align-items:center;gap:5px;min-height:21px;padding:3px 6px;border:1px solid rgba(184,202,216,.78);border-radius:7px;background:rgba(251,253,255,.9);color:#4d6374;font-size:.61rem;font-weight:900;line-height:1;box-shadow:0 1px 3px rgba(52,75,92,.05)}
.earthcoin-indicator-legend-swatch{width:13px;height:2px;border-radius:999px;background:#8295a4}
.earthcoin-indicator-legend-item.sma .earthcoin-indicator-legend-swatch{background:#a77727}
.earthcoin-indicator-legend-item.ema .earthcoin-indicator-legend-swatch{background:#7565a7}
.earthcoin-indicator-legend-item.bollinger .earthcoin-indicator-legend-swatch{background:#6f8ea5}
.earthcoin-bollinger-fill{fill:#6f94b0;fill-opacity:.075;stroke:none}
.earthcoin-indicator-line{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.earthcoin-indicator-line.sma{stroke:#a77727;stroke-width:1.4}
.earthcoin-indicator-line.ema{stroke:#7565a7;stroke-width:1.4}
.earthcoin-indicator-line.bollinger{stroke:#6f8ea5;stroke-width:1.05;opacity:.78}
.earthcoin-indicator-line.bollinger.middle{stroke-dasharray:4 4;opacity:.48}
.earthcoin-indicator-line.supertrend{stroke-width:1.7;opacity:.94}
.earthcoin-indicator-line.supertrend.up{stroke:#2f9a72}.earthcoin-indicator-line.supertrend.down{stroke:#c34f67}
.earthcoin-chart-main-stage{position:relative;min-width:0}
.earthcoin-indicator-panes{display:grid;gap:1px;border-top:1px solid #d7e3ed;background:#d7e3ed}
.earthcoin-indicator-panes[hidden]{display:none}
.earthcoin-indicator-pane{position:relative;min-width:0;background:#fbfdff}
.earthcoin-indicator-pane-head{position:absolute;z-index:3;top:4px;left:7px;display:flex;align-items:center;gap:6px;pointer-events:none}
.earthcoin-indicator-pane-title{pointer-events:auto;min-height:19px;border:1px solid rgba(184,202,216,.76);border-radius:6px;padding:2px 6px;background:rgba(251,253,255,.92);color:#496275;font:inherit;font-size:.59rem;font-weight:900;cursor:pointer}
.earthcoin-indicator-pane-title:hover{border-color:#9fb7ca;background:#fff}.earthcoin-indicator-pane-title:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.earthcoin-indicator-pane-svg{display:block;width:100%;height:126px;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;background:#fbfdff}
.earthcoin-indicator-pane-svg:active{cursor:grabbing}
.earthcoin-indicator-pane-bg{fill:#fbfdff}
.earthcoin-indicator-pane-guide{stroke:#dbe5ed;stroke-width:1;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}.earthcoin-indicator-pane-guide.major{stroke:#c9d8e4}.earthcoin-indicator-pane-guide.zero{stroke:#b8c9d6;stroke-dasharray:4 4}
.earthcoin-indicator-pane-axis{fill:#6a7d8c;font-size:9px;font-weight:800;font-variant-numeric:tabular-nums}
.earthcoin-pane-line{fill:none;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.earthcoin-pane-line.macd-signal{stroke:#e08a35}.earthcoin-macd-histogram{opacity:.52}.earthcoin-macd-histogram.up{fill:#4ca487}.earthcoin-macd-histogram.down{fill:#c65c72}
@media(max-width:720px){.earthcoin-chart-actions{position:relative;width:100%;align-self:stretch}.earthcoin-indicator-control{position:static;margin-left:auto}.earthcoin-indicator-menu{right:0;left:auto}}
@media(max-width:430px){.earthcoin-chart-actions{gap:5px}.earthcoin-indicator-menu{width:min(214px,calc(100vw - 28px))}.earthcoin-indicator-legend{top:6px;left:7px;gap:4px}.earthcoin-indicator-legend-item{padding:3px 5px;font-size:.59rem}}

/* Directional position UX and AME trading ranking. */
.earthcoin-portfolio{grid-template-columns:repeat(3,minmax(0,1fr))}
.earthcoin-position-summary strong{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.earthcoin-position-badge,.earthcoin-ranking-side{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:3px 7px;border:1px solid #cad9e4;border-radius:999px;background:#f1f5f8;color:#607484;font-size:.64rem;font-weight:950;letter-spacing:.04em;line-height:1}
.earthcoin-position-badge.long,.earthcoin-ranking-side.long{border-color:#a9ddc8;background:#e9f8f1;color:#1f725a}
.earthcoin-position-badge.short,.earthcoin-ranking-side.short{border-color:#efb9c3;background:#fff0f3;color:#a33b50}
.earthcoin-outcome.up,.earthcoin-ranking-table td.up{color:#1f775f}
.earthcoin-outcome.down,.earthcoin-ranking-table td.down{color:#b13e55}
.earthcoin-outcome.flat,.earthcoin-ranking-table td.flat{color:var(--ink)}
.earthcoin-position-selector-wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid #d6e3ed;border-radius:16px;background:#f8fbfd}
.earthcoin-position-selector{display:grid;grid-template-columns:1fr 1fr;gap:5px;min-width:210px;padding:4px;border:1px solid #d1dee8;border-radius:13px;background:#fff}
.earthcoin-position-side{min-height:38px;border:1px solid transparent;border-radius:10px;padding:7px 18px;background:transparent;color:#586d7d;font-weight:950;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.earthcoin-position-side.long:hover:not(:disabled),.earthcoin-position-side.long.active{border-color:#9ed7c0;background:#e8f7f0;color:#1f725a}
.earthcoin-position-side.short:hover:not(:disabled),.earthcoin-position-side.short.active{border-color:#ecafbc;background:#fff0f3;color:#a33b50}
.earthcoin-position-side:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-position-side:disabled{cursor:not-allowed;opacity:.46;background:#f1f4f7;color:#71818e}
.earthcoin-position-selector-wrap p{flex:1 1 260px;margin:0;color:var(--muted);font-size:.72rem;font-weight:800;line-height:1.5}
.earthcoin-trades.position-short .earthcoin-trade-card.buy{border-color:#efb7c1;background:linear-gradient(135deg,#fffdfd,#fff0f3)}
.earthcoin-trades.position-short .earthcoin-trade-card.buy .btn.primary{border-color:#bd4c61;background:linear-gradient(180deg,#cf6276,#b94359)}
.earthcoin-trades.position-short .earthcoin-trade-card.sell{border-color:#c9ded7;background:linear-gradient(135deg,#fbfffe,#f0faf6)}
.earthcoin-ranking-open{min-height:34px;border:1px solid #e2c992;border-radius:10px;padding:6px 10px;background:#fff9e9;color:#785a1e;font-size:.72rem;font-weight:950;line-height:1;cursor:pointer;white-space:nowrap}
.earthcoin-ranking-open:hover{border-color:#d1af65;background:#fff5d8}
.earthcoin-ranking-open:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-ranking-dialog{width:min(1380px,calc(100vw - 32px));max-width:none;max-height:min(88vh,820px);border:0;padding:0;background:transparent;color:var(--ink)}
.earthcoin-ranking-dialog::backdrop{background:rgba(17,52,78,.38);backdrop-filter:blur(3px)}
.earthcoin-ranking-card{display:flex;flex-direction:column;max-height:min(88vh,820px);overflow:hidden;border:1px solid #c9dceb;border-radius:24px;background:#fbfdff;box-shadow:0 28px 70px rgba(27,77,111,.25)}
.earthcoin-ranking-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 22px 12px}
.earthcoin-ranking-head h2{margin:3px 0 4px;font-size:1.55rem;letter-spacing:-.035em}
.earthcoin-ranking-head p{margin:0;color:var(--muted);font-size:.77rem;line-height:1.5}
.earthcoin-ranking-head-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.earthcoin-ranking-calendar{display:inline-flex;align-items:center;min-height:38px;border:1px solid #e2c992;border-radius:11px;padding:6px 12px;background:#fff9e9;color:#785a1e;font-size:.76rem;font-weight:950;text-decoration:none;white-space:nowrap}
.earthcoin-ranking-calendar:hover{border-color:#d1af65;background:#fff5d8}
.earthcoin-ranking-calendar:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-ranking-close{flex:0 0 40px;width:40px;height:40px;border:0;border-radius:50%;background:#eaf3fa;color:var(--ink);font-size:1.45rem;line-height:1;cursor:pointer}
.earthcoin-ranking-close:hover{background:#dcebf7}
.earthcoin-ranking-close:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-ranking-periods{display:inline-flex;align-self:flex-start;gap:4px;margin:0 22px 12px;padding:4px;border:1px solid #c9dceb;border-radius:12px;background:#eef5fa}
.earthcoin-ranking-periods button{min-width:56px;min-height:34px;border:0;border-radius:9px;padding:6px 12px;background:transparent;color:#52697a;font-size:.76rem;font-weight:950;cursor:pointer}
.earthcoin-ranking-periods button:hover{background:#e0edf6;color:var(--ink)}
.earthcoin-ranking-periods button[aria-selected="true"]{background:#fff;color:#785a1e;box-shadow:0 1px 3px rgba(17,52,78,.16),inset 0 0 0 1px #e2c992}
.earthcoin-ranking-periods button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-ranking-period-note{margin:0 22px 10px;color:var(--muted);font-size:.7rem;line-height:1.5}
.earthcoin-ranking-controls{display:flex;gap:8px;flex-wrap:wrap;padding:0 22px 12px}
.earthcoin-ranking-controls label{display:grid;gap:4px;color:var(--muted);font-size:.68rem;font-weight:900}
.earthcoin-ranking-controls select{min-height:40px;border:1px solid #c5d7e5;border-radius:11px;padding:6px 34px 6px 10px;background:#fff;color:var(--ink);font-weight:900}
.earthcoin-ranking-status{margin:0 22px 10px;padding:8px 10px;border-radius:10px;background:#eef5fa;color:var(--muted);font-size:.72rem;font-weight:850;line-height:1.45}
.earthcoin-ranking-table-wrap{min-height:180px;overflow:auto;border-top:1px solid #d9e4ed;border-bottom:1px solid #d9e4ed;background:#fff}
/* Chromium ignores min-width on display:table, so the table itself fills the dialog (width:100%) and
   only grows past it — with horizontal scroll — when nowrap values need more room than the viewport. */
.earthcoin-ranking-table{width:100%;table-layout:auto;border-collapse:collapse;font-size:.76rem;font-variant-numeric:tabular-nums}
.earthcoin-ranking-table th{position:sticky;top:0;z-index:1;padding:10px 12px;border-bottom:1px solid #d5e2ec;background:#f4f9fc;color:#52697a;text-align:left;font-size:.67rem;font-weight:950;white-space:nowrap}
.earthcoin-ranking-table td{padding:10px 12px;border-bottom:1px solid #edf2f5;vertical-align:middle;font-weight:800;white-space:nowrap;overflow-wrap:normal;word-break:normal}

.earthcoin-ranking-table col[data-column="rank"]{width:7%}
.earthcoin-ranking-table col[data-column="earth"]{width:19%}
.earthcoin-ranking-table col[data-column="position"]{width:18%}
.earthcoin-ranking-table col[data-column="money"]{width:20%}
.earthcoin-ranking-table col[data-column="return"]{width:14%}
.earthcoin-ranking-table col[data-column="realized"]{width:22%}
.earthcoin-ranking-table th[data-column="rank"],.earthcoin-ranking-table td[data-column="rank"]{min-width:64px}
.earthcoin-ranking-table th[data-column="earth"],.earthcoin-ranking-table td[data-column="earth"]{min-width:140px}
.earthcoin-ranking-table th[data-column="position"],.earthcoin-ranking-table td[data-column="position"]{min-width:150px}
.earthcoin-ranking-table th[data-column="money"],.earthcoin-ranking-table td[data-column="money"]{min-width:160px}
.earthcoin-ranking-table th[data-column="return"],.earthcoin-ranking-table td[data-column="return"]{min-width:120px}
.earthcoin-ranking-table th[data-column="realized"],.earthcoin-ranking-table td[data-column="realized"]{min-width:160px}
.earthcoin-ranking-table th[data-column="money"],.earthcoin-ranking-table th[data-column="return"],.earthcoin-ranking-table th[data-column="realized"],.earthcoin-ranking-table td[data-column="money"],.earthcoin-ranking-table td[data-column="return"],.earthcoin-ranking-table td[data-column="realized"]{text-align:right}
.earthcoin-ranking-table th:first-child,.earthcoin-ranking-table td:first-child{padding-left:22px}
.earthcoin-ranking-table th:last-child,.earthcoin-ranking-table td:last-child{padding-right:22px}
.earthcoin-ranking-table td[data-column="money"],.earthcoin-ranking-table td[data-column="return"],.earthcoin-ranking-table td[data-column="realized"],.earthcoin-ranking-quantity{font-variant-numeric:tabular-nums;white-space:nowrap;overflow-wrap:normal;word-break:normal}
.earthcoin-ranking-table tbody tr.mine{background:#f0f8ff}
.earthcoin-ranking-mine{display:inline-flex;align-items:center;min-height:20px;padding:2px 6px;border-radius:999px;background:#dceeff;color:#285f98;font-size:.6rem;font-weight:950}
.earthcoin-ranking-quantity{display:block;margin-top:4px;color:#52697a;font-size:.69rem}
.earthcoin-ranking-empty,.earthcoin-ranking-loading{text-align:center!important;color:var(--muted);padding:30px 14px!important;white-space:normal!important}
.earthcoin-ranking-pagination{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 18px 16px;color:var(--muted);font-size:.72rem;font-weight:900}
.earthcoin-ranking-pagination button{min-height:36px;border:1px solid #c8dae7;border-radius:10px;padding:6px 12px;background:#fff;color:var(--ink);font-weight:900;cursor:pointer}
.earthcoin-ranking-pagination button:hover:not(:disabled){background:#f1f7fb}
.earthcoin-ranking-pagination button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-ranking-pagination button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:760px){.earthcoin-portfolio{grid-template-columns:1fr 1fr}.earthcoin-portfolio>div:last-child{grid-column:auto}.earthcoin-position-selector-wrap{align-items:stretch}.earthcoin-position-selector{width:100%}.earthcoin-ranking-head{padding:18px 16px 10px}.earthcoin-ranking-controls{padding:0 16px 10px}.earthcoin-ranking-status{margin:0 16px 10px}.earthcoin-ranking-table th:first-child,.earthcoin-ranking-table td:first-child{padding-left:16px}.earthcoin-ranking-table th:last-child,.earthcoin-ranking-table td:last-child{padding-right:16px}}
@media(max-width:520px){.earthcoin-portfolio{grid-template-columns:1fr}.earthcoin-ranking-dialog{width:calc(100vw - 12px)}.earthcoin-ranking-card{border-radius:18px}.earthcoin-ranking-controls{display:grid;grid-template-columns:1fr 1fr}.earthcoin-ranking-controls select{width:100%}.earthcoin-ranking-periods{display:grid;grid-template-columns:repeat(4,1fr);align-self:stretch}.earthcoin-ranking-periods button{min-width:0}}
@media(prefers-reduced-motion:reduce){.earthcoin-position-side{transition:none}}
.earthcoin-position-summary strong>[data-earthcoin-balance]{display:inline;color:var(--ink);font-size:1.05rem}

/* Independent indicator instances and per-instance editor. */
.earthcoin-indicator-menu-item:disabled{cursor:not-allowed;opacity:.48;background:#f4f6f8}
.earthcoin-indicator-check{opacity:1;color:#2d7c68;font-size:.9rem}
.earthcoin-indicator-notice{min-height:0;margin:2px 3px 0;padding:0;color:#6d7f8c;font-size:.62rem;font-weight:850;line-height:1.4}
.earthcoin-indicator-notice:empty{display:none}
.earthcoin-indicator-notice.good{color:#2b765f}.earthcoin-indicator-notice.bad{color:#aa4357}.earthcoin-indicator-notice.limit{color:#8a662a}
.earthcoin-indicator-legend{pointer-events:auto}
.earthcoin-indicator-legend-item{appearance:none;cursor:pointer;font-family:inherit}
.earthcoin-indicator-legend-item:hover{border-color:#9fb7ca;background:#fff;color:#315570}
.earthcoin-indicator-legend-item:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
.earthcoin-indicator-editor{width:min(420px,calc(100vw - 24px));max-width:none;border:0;padding:0;background:transparent;color:var(--ink)}
.earthcoin-indicator-editor::backdrop{background:rgba(17,52,78,.34);backdrop-filter:blur(2px)}
.earthcoin-indicator-editor-card{display:grid;gap:14px;padding:20px;border:1px solid #c9dbe9;border-radius:20px;background:#fbfdff;box-shadow:0 24px 60px rgba(27,77,111,.22)}
.earthcoin-indicator-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.earthcoin-indicator-editor-head h2{margin:3px 0 0;font-size:1.25rem;letter-spacing:-.03em}
.earthcoin-indicator-editor-head button{width:38px;height:38px;border:0;border-radius:50%;background:#eaf3fa;color:var(--ink);font-size:1.35rem;cursor:pointer}
.earthcoin-indicator-editor-card>label{display:grid;gap:6px;color:#586d7d;font-size:.72rem;font-weight:900}
.earthcoin-indicator-editor-card>label[hidden]{display:none!important}
.earthcoin-indicator-editor-card input{width:100%;min-height:42px;border:1px solid #c5d7e5;border-radius:11px;padding:8px 10px;background:#fff;color:var(--ink);font:inherit;font-weight:900;font-variant-numeric:tabular-nums}
.earthcoin-indicator-editor-card input[aria-invalid="true"]{border-color:#cc6a7c;background:#fff7f8}
.earthcoin-indicator-editor-card input:focus-visible,.earthcoin-indicator-editor-head button:focus-visible,.earthcoin-indicator-editor-actions button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-indicator-editor-error{min-height:18px;margin:0;color:#aa4357;font-size:.68rem;font-weight:850;line-height:1.4}
.earthcoin-indicator-editor-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;align-items:center}
.earthcoin-indicator-editor-actions button{min-height:38px;border:1px solid #c9d8e4;border-radius:10px;padding:7px 12px;background:#fff;color:var(--ink);font-weight:900;cursor:pointer}
.earthcoin-indicator-editor-actions button.primary{border-color:transparent;background:#1c7bc9;color:#fff}
.earthcoin-indicator-editor-actions button.danger{border-color:#e7b6c0;background:#fff4f6;color:#a33b50}
@media(max-width:430px){.earthcoin-indicator-editor-card{padding:16px;border-radius:17px}.earthcoin-indicator-editor-actions{grid-template-columns:1fr 1fr}.earthcoin-indicator-editor-actions span{display:none}.earthcoin-indicator-editor-actions button{width:100%}}

/* v4.2.9: exchange-style Earthcoin order rail while preserving the prior desktop chart width. */
.panel-shell.earthcoin-wide{width:min(1450px,97vw)}
.earthcoin-workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start;min-width:0}
.earthcoin-primary{display:grid;gap:14px;min-width:0}
.earthcoin-order-panel{position:sticky;top:0;display:grid;gap:12px;min-width:0;padding:14px;border:1px solid #cfdeea;border-radius:20px;background:linear-gradient(180deg,#fbfdff,#f5fafd);box-shadow:0 8px 22px rgba(31,83,118,.07)}
.earthcoin-order-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:0 2px 2px}.earthcoin-order-head strong{font-size:1.08rem;letter-spacing:-.03em}
.earthcoin-order-panel .earthcoin-position-selector-wrap{display:grid;gap:8px;padding:0;border:0;border-radius:0;background:transparent}
.earthcoin-order-panel .earthcoin-position-selector{width:100%;min-width:0}
.earthcoin-order-panel .earthcoin-position-selector-wrap p{margin:0;padding:0 2px;font-size:.68rem;line-height:1.45}
.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr;gap:10px}
.earthcoin-order-panel .earthcoin-trade-card{grid-template-columns:1fr;gap:9px;padding:12px}
.earthcoin-order-panel .earthcoin-trade-card>.earthcoin-trade-summary{grid-column:auto}
.earthcoin-order-panel .earthcoin-trade-card .btn{width:100%}
.earthcoin-order-panel .earthcoin-quick-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.earthcoin-order-panel .earthcoin-quick-btn{min-width:0;padding-inline:3px}
@media(max-width:1180px){.panel-shell.earthcoin-wide{width:min(1100px,95vw)}.earthcoin-workspace{grid-template-columns:1fr}.earthcoin-order-panel{position:static}.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr 1fr}.earthcoin-order-panel .earthcoin-trade-card{grid-template-columns:minmax(0,1fr);}}
@media(max-width:720px){.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr}.earthcoin-order-panel{padding:12px}}

/* Arbitrary-precision values may be hundreds of digits; preserve the
   exact text while allowing it to wrap instead of widening the application viewport. */
.money-card,.level-card{min-width:0}
.money-card strong,#hud-exp-text,.content-card .price,.content-card p,.inventory-row p,.setting-row p,.toast,.earthcoin-market-head strong,.earthcoin-trade-summary strong{min-width:0;overflow-wrap:anywhere;word-break:break-word;font-variant-numeric:tabular-nums}
#hud-exp-text{text-align:right}
.content-card .price{flex-wrap:wrap}
.uth-ranking-table td{overflow-wrap:anywhere;word-break:break-word}
.earthcoin-trade-card input[name="quantity"]{font-variant-numeric:tabular-nums}
.earthcoin-market-head>div:first-child,.earthcoin-price-line{min-width:0;max-width:100%}
.earthcoin-daily-rate,.earthcoin-market-head small{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word}

/* Unified Market/Limit one-way order ticket. */
.earthcoin-order-type{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid #d1dee8;border-radius:13px;background:#eaf1f6}
.earthcoin-order-type-btn{min-height:38px;border:1px solid transparent;border-radius:9px;padding:7px 12px;background:transparent;color:#586d7d;font-weight:950;cursor:pointer}
.earthcoin-order-type-btn:hover:not(:disabled){background:#f7fafc;color:#315570}.earthcoin-order-type-btn.active{border-color:#9fbed6;background:#fff;color:#225175;box-shadow:0 2px 8px rgba(31,83,118,.07)}
.earthcoin-order-type-btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-order-type-btn:disabled{cursor:not-allowed;opacity:.5}
.earthcoin-order-price-field[hidden]{display:none}.earthcoin-order-price-field label{display:grid;gap:6px;color:var(--muted);font-size:.7rem;font-weight:950}
.earthcoin-order-input-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid #bcd2e2;border-radius:11px;background:#fff;overflow:hidden}
.earthcoin-order-input-wrap:focus-within{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-order-input-wrap input{width:100%;min-width:0;height:43px;border:0;padding:0 10px;background:transparent;color:var(--ink);font-weight:950;font-variant-numeric:tabular-nums;outline:0}
.earthcoin-order-input-wrap>span{padding:0 10px;color:#6f8291;font-size:.7rem;font-weight:950}.earthcoin-order-input-wrap input[aria-invalid="true"]{background:#fff4f6}
.earthcoin-order-price-hint{margin:-4px 2px 0;color:var(--muted);font-size:.66rem;font-weight:800;line-height:1.4}
.earthcoin-slider-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.earthcoin-slider-row input[type="range"]{height:28px;padding:0;border:0;background:transparent;accent-color:#3a7bad;cursor:pointer}
.earthcoin-slider-row input[type="range"]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-slider-row input[type="range"]:disabled{cursor:not-allowed;opacity:.45}
.earthcoin-slider-row output{min-width:74px;color:#52697a;font-size:.66rem;font-weight:950;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.earthcoin-required-resource{min-height:1.35em!important;padding:7px 9px;border-radius:9px;background:rgba(255,255,255,.7);color:#52697a!important;font-size:.68rem!important;font-weight:900;line-height:1.35!important;font-variant-numeric:tabular-nums}
.earthcoin-action-buy{border-color:#4b9f80!important;background:linear-gradient(180deg,#58ad8e,#3e8d72)!important;color:#fff!important}.earthcoin-action-sell{border-color:#c45a6d!important;background:linear-gradient(180deg,#d4687a,#bb4f63)!important;color:#fff!important}
.earthcoin-order-assets{display:grid;gap:5px;margin:0;padding-top:10px;border-top:1px solid #d8e3eb}.earthcoin-order-assets>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:baseline}.earthcoin-order-assets dt{color:#718595;font-size:.62rem;font-weight:850}.earthcoin-order-assets dd{min-width:0;margin:0;color:#314a5e;font-size:.68rem;font-weight:950;text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.earthcoin-order-assets-secondary{opacity:.8}
@media(max-width:720px){.earthcoin-slider-row{grid-template-columns:minmax(0,1fr) 82px}.earthcoin-order-assets>div{gap:6px}}

/* Unified Market/Limit pro order panel. */
.earthcoin-order-type{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid #d3e0ea;border-radius:12px;background:#eaf1f6}
.earthcoin-order-type-btn{min-height:38px;border:1px solid transparent;border-radius:8px;padding:7px 10px;background:transparent;color:#556d7f;font:inherit;font-size:.72rem;font-weight:950;cursor:pointer}
.earthcoin-order-type-btn:hover:not(:disabled){background:#f7fafc;color:#214865}.earthcoin-order-type-btn.active{border-color:#c6d8e5;background:#fff;color:#183f56;box-shadow:0 3px 10px rgba(31,83,118,.08)}
.earthcoin-order-type-btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-order-type-btn:disabled{cursor:not-allowed;opacity:.55}
.earthcoin-order-price-field{display:grid;gap:6px}.earthcoin-order-price-field[hidden]{display:none!important}.earthcoin-order-price-field>label{display:grid;gap:6px;color:var(--muted);font-size:.7rem;font-weight:900}
.earthcoin-order-input-wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;border:1px solid #bcd2e2;border-radius:11px;background:#fff;overflow:hidden}
.earthcoin-order-input-wrap:focus-within{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-order-input-wrap input{min-width:0;min-height:44px;border:0;padding:0 11px;background:transparent;color:var(--ink);font:inherit;font-weight:900;font-variant-numeric:tabular-nums;outline:none}
.earthcoin-order-input-wrap input[aria-invalid="true"]{background:#fff4f6}.earthcoin-order-input-wrap>span{display:grid;place-items:center;padding:0 10px;border-left:1px solid #d7e3ed;color:#5e7484;font-size:.67rem;font-weight:950}
.earthcoin-order-price-hint{margin:0;padding:0 2px;color:#667c8c;font-size:.65rem;font-weight:800;line-height:1.4;font-variant-numeric:tabular-nums}
.earthcoin-slider-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.earthcoin-slider-row input[type="range"]{width:100%;height:28px;padding:0;border:0;background:transparent;accent-color:#3e7baa;cursor:pointer}.earthcoin-slider-row input[type="range"]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-slider-row input[type="range"]:disabled{cursor:not-allowed;opacity:.42}
.earthcoin-slider-row output{min-width:64px;color:#476378;font-size:.64rem;font-weight:950;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.earthcoin-required-resource{display:flex;align-items:center;justify-content:space-between;min-height:35px;margin:0;padding:7px 9px;border-radius:9px;background:rgba(236,243,249,.8);color:#5b7181!important;font-size:.67rem!important;font-weight:900!important;font-variant-numeric:tabular-nums}
.earthcoin-action-buy{border-color:#3d9a7d!important;background:linear-gradient(180deg,#54ad8f,#3c9479)!important;color:#fff!important}.earthcoin-action-sell{border-color:#c7687a!important;background:linear-gradient(180deg,#d9798a,#c25c70)!important;color:#fff!important}
.earthcoin-action-buy:disabled,.earthcoin-action-sell:disabled{border-color:#d2dce4!important;background:#e7edf1!important;color:#8b9daa!important}
.earthcoin-order-assets{display:grid;grid-template-columns:1fr;gap:0;margin:0;border:1px solid #d1dfe9;border-radius:11px;background:#fff;overflow:hidden}.earthcoin-order-assets>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;min-height:38px;padding:7px 10px;border-bottom:1px solid #e5ecf1}.earthcoin-order-assets>div:last-child{border-bottom:0}
.earthcoin-order-assets dt{color:#718492;font-size:.62rem;font-weight:850}.earthcoin-order-assets dd{margin:0;color:#284a64;font-size:.67rem;font-weight:950;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}.earthcoin-order-assets-secondary{background:#f8fafc}
.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr;gap:8px}.earthcoin-order-panel .earthcoin-trade-card{gap:8px}.earthcoin-trade-card.buy{border-color:#b9e3d7;background:linear-gradient(135deg,#fbfffe,#f1faf7)}.earthcoin-trade-card.sell{border-color:#efc1ca;background:linear-gradient(135deg,#fffdfd,#fff3f5)}
@media(max-width:1180px){.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.earthcoin-order-panel .earthcoin-trades{grid-template-columns:1fr}.earthcoin-order-assets{grid-template-columns:1fr}.earthcoin-slider-row output{min-width:58px}}
@media(prefers-reduced-motion:reduce){.earthcoin-order-type-btn{transition:none}}

/* Shared persisted position/order panel. */
.earthcoin-portfolio-panel{min-width:0;border:1px solid #cfdde8;border-radius:18px;background:#fbfdff;overflow:hidden}
.earthcoin-portfolio-tabs{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid #dce6ee;background:#f3f8fb}
.earthcoin-portfolio-tab{min-height:36px;padding:7px 12px;border:1px solid transparent;border-radius:10px;background:transparent;color:#617783;font-weight:900;cursor:pointer}
.earthcoin-portfolio-tab:hover{background:#eaf1f7;color:#254862}
.earthcoin-portfolio-tab.active{border-color:#bdd1e0;background:#fff;color:#173851;box-shadow:0 2px 8px rgba(31,83,118,.06)}
.earthcoin-portfolio-tab:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-order-count{display:inline-grid;min-width:20px;height:20px;place-items:center;margin-left:4px;padding:0 5px;border-radius:999px;background:#e4edf4;color:#456075;font-size:.68rem;font-variant-numeric:tabular-nums}
.earthcoin-portfolio-tab.active .earthcoin-order-count{background:#d8e6f0;color:#173851}
.earthcoin-portfolio-panel-body{padding:0}
.earthcoin-data-table-wrap{min-width:0;overflow:auto}
.earthcoin-data-table{width:100%;min-width:860px;border-collapse:collapse;font-size:.76rem}
.earthcoin-data-table th,.earthcoin-data-table td{padding:11px 12px;border-bottom:1px solid #e4ebf1;text-align:left;vertical-align:middle;white-space:nowrap}
.earthcoin-data-table th{background:#f9fbfd;color:#708692;font-size:.65rem;font-weight:950;letter-spacing:.025em}
.earthcoin-data-table td{color:#294459;font-variant-numeric:tabular-nums}
.earthcoin-data-table tbody tr:last-child td{border-bottom:0}
.earthcoin-data-table .earthcoin-position-badge{display:inline-flex;margin:0}
.earthcoin-cell-caption{display:block;margin-top:2px;color:#81939d;font-size:.62rem;font-weight:800}
.earthcoin-position-outcome{display:grid;gap:2px}.earthcoin-position-outcome strong{font-size:.78rem}.earthcoin-position-outcome small{font-size:.64rem;font-weight:900}
.earthcoin-position-outcome.up{color:#13815d}.earthcoin-position-outcome.down{color:#bd4b61}.earthcoin-position-outcome.flat{color:#5f7382}
.earthcoin-order-list-empty{margin:0;padding:16px;color:#738995;font-size:.76rem;font-weight:800}
.earthcoin-order-list-empty[hidden]{display:none}
.earthcoin-order-cancel{min-height:30px;padding:5px 9px;border:1px solid #d6bcc2;border-radius:8px;background:#fff;color:#a34155;font-size:.7rem;font-weight:900;cursor:pointer}
.earthcoin-order-cancel:hover{background:#fff4f6}.earthcoin-order-cancel:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-order-cancel:disabled{opacity:.55;cursor:wait}
@media(max-width:720px){.earthcoin-portfolio-panel{border-radius:15px}.earthcoin-portfolio-tabs{padding:7px}.earthcoin-portfolio-tab{flex:1}.earthcoin-data-table{min-width:760px}.earthcoin-data-table th,.earthcoin-data-table td{padding:10px}}
@media(forced-colors:active){.earthcoin-portfolio-panel,.earthcoin-portfolio-tab.active,.earthcoin-order-cancel{border:1px solid CanvasText}}

/* 지정가 체결 알림: 오더 목록 위 안내 줄과 화면 오른쪽 아래 알림 카드 */
.earthcoin-fill-notify{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0;padding:10px 16px;border-bottom:1px solid #e3ebf0;background:#f7fafc}
.earthcoin-fill-notify p{margin:0;color:#5b6f7b;font-size:.74rem;font-weight:700;line-height:1.45}
.earthcoin-fill-notify-btn{min-height:30px;padding:5px 11px;border:1px solid #c9d7e0;border-radius:8px;background:#fff;color:#1f3a4d;font-size:.72rem;font-weight:800;cursor:pointer;white-space:nowrap}
.earthcoin-fill-notify-btn:hover{background:#eef5fa}.earthcoin-fill-notify-btn.active{border-color:#7fb2d6;background:#e8f3fb;color:#14507a}
.earthcoin-fill-notify-btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-fill-notify-btn:disabled{opacity:.6;cursor:not-allowed}
.earthcoin-fill-notify-btn[hidden]{display:none}
.earthcoin-fill-toasts{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;align-items:flex-end;gap:8px;width:min(360px,calc(100vw - 32px));pointer-events:none}
.earthcoin-fill-toast{position:relative;display:grid;grid-template-columns:4px 1fr auto;gap:12px;align-items:start;width:100%;padding:12px 10px 12px 0;overflow:hidden;border:1px solid #d9e4eb;border-radius:10px;background:#fff;box-shadow:0 10px 28px rgba(16,42,61,.16);color:#16303f;pointer-events:auto;animation:earthcoin-fill-in .22s ease-out}
.earthcoin-fill-toast-mark{align-self:stretch;margin:-12px 0;background:#7a8e9b}
.earthcoin-fill-toast[data-side="buy"] .earthcoin-fill-toast-mark{background:var(--ec-up,#16a34a)}
.earthcoin-fill-toast[data-side="sell"] .earthcoin-fill-toast-mark{background:var(--ec-down,#dc2626)}
.earthcoin-fill-toast-body{min-width:0}
.earthcoin-fill-toast-title{display:block;font-size:.8rem;font-weight:900;letter-spacing:-.01em}
.earthcoin-fill-toast-lines{margin:5px 0 0;padding:0;list-style:none;display:grid;gap:3px}
.earthcoin-fill-toast-lines li{color:#3d5463;font-size:.74rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.4;overflow-wrap:anywhere}
.earthcoin-fill-toast-more{display:block;margin-top:4px;color:#738995;font-size:.7rem;font-weight:700}
.earthcoin-fill-toast-close{width:26px;height:26px;margin-top:-4px;padding:0;border:0;border-radius:6px;background:transparent;color:#738995;font-size:1.05rem;line-height:1;cursor:pointer}
.earthcoin-fill-toast-close:hover{background:#eef3f6;color:#16303f}.earthcoin-fill-toast-close:focus-visible{outline:3px solid var(--focus);outline-offset:1px}
@keyframes earthcoin-fill-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.earthcoin-fill-toast{animation:none}}
@media(forced-colors:active){.earthcoin-fill-toast,.earthcoin-fill-notify-btn{border:1px solid CanvasText}.earthcoin-fill-toast-mark{background:CanvasText}}

/* Shared unified order ticket. */
.earthcoin-unified-ticket{display:grid;grid-template-columns:1fr;gap:10px;min-width:0;padding:12px;border:1px solid #cfdde8;border-radius:14px;background:#fff}
.earthcoin-ticket-context-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0}
.earthcoin-ticket-context{min-width:0;padding:9px 10px;border:1px solid #d7e2ea;border-radius:10px;background:#f8fafc}
.earthcoin-ticket-context.buy{border-color:#c4e2d6;background:#f5fbf8}.earthcoin-ticket-context.sell{border-color:#edcbd2;background:#fff7f8}
.earthcoin-ticket-context>.tiny-label{display:block;margin-bottom:3px}.earthcoin-ticket-context>strong{display:block;font-size:.84rem}.earthcoin-ticket-context p{margin:3px 0 0;color:var(--muted);font-size:.64rem;font-weight:850;line-height:1.35}.earthcoin-ticket-context b{font-weight:950;font-variant-numeric:tabular-nums}
.earthcoin-ticket-quantity{display:grid;gap:7px;min-width:0}.earthcoin-ticket-quantity label{display:grid;gap:5px;color:var(--muted);font-size:.7rem;font-weight:900}.earthcoin-ticket-quantity input[type="text"]{width:100%;min-width:0;height:44px;border:1px solid #bcd2e2;border-radius:11px;padding:0 11px;background:#fff;color:var(--ink);font:inherit;font-weight:900;font-variant-numeric:tabular-nums;outline:none}.earthcoin-ticket-quantity input[type="text"]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.earthcoin-ticket-quantity input[type="text"][aria-invalid="true"]{border-color:#cc6a7c;background:#fff7f8}
.earthcoin-quantity-mode{min-height:1.2em;color:#6c7e8c;font-size:.62rem;font-weight:800;line-height:1.35}
.earthcoin-action-previews{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-width:0}
.earthcoin-action-preview{display:grid;gap:6px;min-width:0;padding:9px;border:1px solid #d9e3eb;border-radius:10px;background:#f9fbfd}.earthcoin-action-preview.buy{border-color:#cce5dc}.earthcoin-action-preview.sell{border-color:#efcfd5}
.earthcoin-action-preview>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.earthcoin-action-preview>div span{color:#6a7e8d;font-size:.61rem;font-weight:850}.earthcoin-action-preview>div strong{min-width:0;color:#294962;font-size:.69rem;font-weight:950;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;text-align:right}
.earthcoin-action-validation{min-height:1.2em;color:#6c7e8c;font-size:.59rem;font-weight:850;line-height:1.35}.earthcoin-action-validation.good{color:#26745e}.earthcoin-action-validation.bad{color:#a23d52}
.earthcoin-ticket-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.earthcoin-ticket-actions .btn{width:100%;min-height:46px;box-shadow:none}
@media(max-width:520px){.earthcoin-ticket-context-grid,.earthcoin-action-previews,.earthcoin-ticket-actions{grid-template-columns:1fr}.earthcoin-unified-ticket{padding:10px}.earthcoin-action-preview{padding:8px}}

/* Chart-column state panel and unified workspace. */
.earthcoin-workspace{grid-template-columns:minmax(0,1fr) minmax(340px,360px);gap:12px}
.earthcoin-primary{gap:10px}
.earthcoin-primary>.earthcoin-portfolio-panel{margin-top:0}
@media(max-width:1180px){.earthcoin-workspace{grid-template-columns:1fr}.earthcoin-primary{gap:10px}.earthcoin-order-panel{position:static}}
/* Exact limit-price shortcuts and accessible adjustment popover. */
.earthcoin-limit-price-tools{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:stretch;min-width:0}
.earthcoin-limit-current-btn,.earthcoin-limit-adjust-toggle{min-width:52px;min-height:44px;border:1px solid #bdd0df;border-radius:10px;padding:0 9px;background:#f8fbfd;color:#315570;font:inherit;font-size:.67rem;font-weight:950;cursor:pointer}
.earthcoin-limit-adjust-toggle{min-width:42px;font-size:.95rem}
.earthcoin-limit-current-btn:hover:not(:disabled),.earthcoin-limit-adjust-toggle:hover:not(:disabled){background:#eaf2f8;color:#174161}
.earthcoin-limit-current-btn:focus-visible,.earthcoin-limit-adjust-toggle:focus-visible,.earthcoin-limit-adjust-popover button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-limit-current-btn:disabled,.earthcoin-limit-adjust-toggle:disabled{cursor:not-allowed;opacity:.52}
.earthcoin-limit-adjust-wrap{position:relative;display:grid;min-width:0}
.earthcoin-limit-adjust-popover{position:absolute;z-index:24;top:calc(100% + 6px);right:0;width:min(250px,calc(100vw - 36px));padding:10px;border:1px solid #bcd2e2;border-radius:12px;background:#fff;box-shadow:0 14px 34px rgba(31,83,118,.18)}
.earthcoin-limit-adjust-popover[hidden]{display:none!important}.earthcoin-limit-adjust-popover>strong{display:block;margin-bottom:7px;color:#36556c;font-size:.69rem}
.earthcoin-limit-adjust-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.earthcoin-limit-adjust-grid button{min-height:34px;border:1px solid #d1dfe9;border-radius:8px;background:#f7fafc;color:#315570;font:inherit;font-size:.68rem;font-weight:950;cursor:pointer}.earthcoin-limit-adjust-grid button:hover{background:#eaf2f8}
.earthcoin-limit-order-guard{margin:-3px 0 0;padding:7px 9px;border:1px solid #efc6cd;border-radius:9px;background:#fff5f6;color:#9a4052;font-size:.64rem;font-weight:900;line-height:1.4}.earthcoin-limit-order-guard[hidden]{display:none!important}
@media(max-width:520px){.earthcoin-limit-price-tools{grid-template-columns:minmax(0,1fr) auto auto}.earthcoin-limit-current-btn{min-width:48px;padding-inline:7px}.earthcoin-limit-adjust-toggle{min-width:40px}.earthcoin-limit-adjust-popover{right:-2px;width:min(248px,calc(100vw - 28px))}}

/* Unified ticket stays one logical column across both surfaces. */
.earthcoin-order-panel .earthcoin-unified-ticket{grid-template-columns:1fr}

/* TradingView-style AME drawing workspace and oscillator panes. */
.earthcoin-chart-shell{display:grid;grid-template-columns:44px minmax(0,1fr);position:relative;min-width:0;overflow:hidden;border:1px solid #d6e3ed;border-radius:16px;background:#fbfdff}
.earthcoin-chart-stack{min-width:0;overflow:hidden}
.earthcoin-chart-main-stage{position:relative;min-width:0}
.earthcoin-chart-main-stage .earthcoin-chart{border:0;border-radius:0}
.earthcoin-drawing-toolbar{z-index:7;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 5px;border-right:1px solid #d7e3ed;background:#f7fafc;overflow:auto;scrollbar-width:thin}
.earthcoin-drawing-toolbar button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid transparent;border-radius:7px;padding:0;background:transparent;color:#53697a;font:inherit;font-size:.72rem;font-weight:900;cursor:pointer;line-height:1}
.earthcoin-drawing-toolbar button span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.earthcoin-drawing-toolbar button:hover:not(:disabled){border-color:#c8d8e4;background:#fff;color:#24435b}.earthcoin-drawing-toolbar button.active{border-color:#9fbfd7;background:#e8f2f9;color:#17517e}
.earthcoin-drawing-toolbar button:focus-visible{outline:3px solid var(--focus);outline-offset:1px}.earthcoin-drawing-toolbar button:disabled{opacity:.35;cursor:not-allowed}
.earthcoin-drawing-toolbar [data-earthcoin-magnet][data-mode="strong"]{box-shadow:inset 0 0 0 1px #4479a2}
.earthcoin-drawing-divider{width:24px;height:1px;margin:2px 0;background:#d4e0ea}
.earthcoin-drawing-floating{position:absolute;z-index:8;top:8px;left:50%;display:flex;align-items:center;gap:4px;transform:translateX(-50%);padding:4px;border:1px solid #c7d7e3;border-radius:9px;background:rgba(255,255,255,.96);box-shadow:0 7px 20px rgba(44,70,89,.14);backdrop-filter:blur(7px)}
.earthcoin-drawing-floating[hidden]{display:none}.earthcoin-drawing-floating input[type="color"]{width:28px;height:26px;border:1px solid #ccd9e3;border-radius:6px;padding:2px;background:#fff;cursor:pointer}
.earthcoin-drawing-floating button{min-height:27px;border:1px solid #d0dce6;border-radius:6px;padding:4px 7px;background:#fff;color:#52697b;font-size:.62rem;font-weight:900;cursor:pointer}.earthcoin-drawing-floating button:hover:not(:disabled){background:#f2f7fa}.earthcoin-drawing-floating button.active{border-color:#98b8d1;background:#e9f2f8;color:#17517e}.earthcoin-drawing-floating button.danger{color:#a23d50}.earthcoin-drawing-floating button:disabled,.earthcoin-drawing-floating input:disabled{opacity:.42;cursor:not-allowed}
.earthcoin-chart[data-drawing-tool]:not([data-drawing-tool="cursor"]){cursor:crosshair}.earthcoin-chart.drawing-selected{cursor:default}.earthcoin-chart[data-drawing-tool="cursor"].drawing-hovered:not(.drawing-active){cursor:grab}.earthcoin-chart[data-drawing-tool="cursor"].drawing-hovered[data-drawing-hover-locked="true"]:not(.drawing-active){cursor:pointer}.earthcoin-chart.drawing-active{cursor:grabbing}
.earthcoin-drawing-shape,.earthcoin-drawing-line,.earthcoin-drawing-baseline,.earthcoin-fib-line,.earthcoin-price-range-border{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.earthcoin-drawing-shape.hovered{filter:drop-shadow(0 0 1.6px rgba(41,95,137,.34))}.earthcoin-drawing-shape.selected{filter:drop-shadow(0 0 2.1px rgba(31,82,121,.42))}.earthcoin-drawing-shape.active{filter:drop-shadow(0 0 2.8px rgba(24,76,116,.5))}.earthcoin-drawing-shape.draft{opacity:.82}.earthcoin-drawing-shape.locked{opacity:.9}
.earthcoin-drawing-handle{fill:#fff;stroke:#346c97;stroke-width:1.55;vector-effect:non-scaling-stroke;pointer-events:none;filter:drop-shadow(0 1px 1px rgba(29,72,104,.22))}.earthcoin-drawing-handle.active{fill:#eef6fc;stroke-width:1.9}.earthcoin-drawing-handle.draft{fill:#f5fafd;opacity:.92}.earthcoin-drawing-handle-center{fill:#346c97;stroke:#fff;stroke-width:.65;vector-effect:non-scaling-stroke;pointer-events:none}.earthcoin-drawing-handle-center.active{fill:#17517e}.earthcoin-drawing-handle-center.draft{opacity:.8}
.earthcoin-drawing-label rect{stroke:none}.earthcoin-drawing-label text{fill:#fff;font-size:8.5px;font-weight:900;dominant-baseline:middle;text-anchor:end}.earthcoin-drawing-label.time text{text-anchor:middle}
.earthcoin-drawing-price-scale-layer,.earthcoin-drawing-time-axis-layer{pointer-events:none}.earthcoin-drawing-price-badge{stroke:rgba(255,255,255,.72);stroke-width:.65;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px rgba(23,66,98,.2))}.earthcoin-drawing-price-text{fill:#fff;font-weight:950;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.earthcoin-drawing-price-connector{fill:none;stroke-width:1.1;opacity:.92;vector-effect:non-scaling-stroke}
.earthcoin-drawing-time-badge{stroke:rgba(255,255,255,.82);stroke-width:.7;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 1px rgba(23,66,98,.2))}.earthcoin-drawing-time-text{fill:#fff;font-weight:950;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.earthcoin-drawing-time-connector{fill:none;stroke-width:1;opacity:.82;vector-effect:non-scaling-stroke}
.earthcoin-price-range-fill,.earthcoin-fib-fill{pointer-events:none}.earthcoin-price-range-fill.hovered,.earthcoin-fib-fill.hovered{filter:drop-shadow(0 0 1px rgba(38,83,118,.18))}.earthcoin-price-range-fill.selected,.earthcoin-fib-fill.selected{filter:drop-shadow(0 0 1.5px rgba(38,83,118,.24))}
.earthcoin-drawing-annotation{pointer-events:none}.earthcoin-drawing-annotation-bg{fill:rgba(251,253,255,.94);stroke-width:.9;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(35,72,101,.14))}.earthcoin-drawing-annotation-text{font-weight:950;font-variant-numeric:tabular-nums;letter-spacing:-.015em}.earthcoin-price-range-stats{dominant-baseline:middle}
.earthcoin-fib-label{font-size:8px;font-weight:900;dominant-baseline:middle;paint-order:stroke fill;stroke:rgba(251,253,255,.96);stroke-width:2.4px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.earthcoin-fib-label.hovered,.earthcoin-fib-label.selected{font-weight:950}.earthcoin-fib-label.draft{opacity:.78}
.earthcoin-drawing-style-dialog{width:min(430px,calc(100vw - 28px));max-width:none;border:0;padding:0;background:transparent;color:var(--ink)}.earthcoin-drawing-style-dialog::backdrop{background:rgba(17,52,78,.34);backdrop-filter:blur(2px)}
.earthcoin-drawing-style-card{display:grid;gap:12px;padding:18px;border:1px solid #c9dceb;border-radius:18px;background:#fbfdff;box-shadow:0 24px 64px rgba(27,77,111,.22)}.earthcoin-drawing-style-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.earthcoin-drawing-style-head h2{margin:2px 0 0;font-size:1.12rem}.earthcoin-drawing-style-head button{border:0;background:transparent;color:#697c8b;font-size:1.4rem;cursor:pointer}.earthcoin-drawing-style-card>label{display:grid;gap:5px;color:#526878;font-size:.72rem;font-weight:900}.earthcoin-drawing-style-card input,.earthcoin-drawing-style-card select{min-height:36px;border:1px solid #cbd9e4;border-radius:9px;padding:7px 9px;background:#fff;color:var(--ink);font:inherit}.earthcoin-drawing-style-card input[type="color"]{padding:3px}.earthcoin-drawing-style-card input[type="range"]{padding:0}
.earthcoin-drawing-style-card [data-earthcoin-drawing-style-field][hidden]{display:none!important}
.earthcoin-drawing-style-checks{display:grid;grid-template-columns:1fr 1fr;gap:7px}.earthcoin-drawing-style-checks label{display:flex;align-items:center;gap:7px;color:#536979;font-size:.68rem;font-weight:850}.earthcoin-drawing-style-checks input{min-height:auto}.earthcoin-drawing-style-error{min-height:1.1em;margin:0;color:#b33d53;font-size:.68rem;font-weight:850}.earthcoin-drawing-style-actions{display:flex;justify-content:flex-end;gap:7px}.earthcoin-drawing-style-actions button{min-height:35px;border:1px solid #cbd9e4;border-radius:9px;padding:7px 12px;background:#fff;color:#4f6575;font-weight:900;cursor:pointer}.earthcoin-drawing-style-actions button.primary{border-color:transparent;background:#1c7bc9;color:#fff}
@media(max-width:720px){.earthcoin-chart-shell{grid-template-columns:1fr;grid-template-rows:auto auto}.earthcoin-drawing-toolbar{flex-direction:row;justify-content:flex-start;padding:5px 6px;border-right:0;border-bottom:1px solid #d7e3ed;overflow-x:auto;overflow-y:hidden}.earthcoin-drawing-toolbar button{flex:0 0 31px;width:31px;height:31px}.earthcoin-drawing-divider{flex:0 0 1px;width:1px;height:24px;margin:3px 2px}.earthcoin-drawing-floating{top:5px;max-width:calc(100% - 12px);overflow-x:auto}.earthcoin-indicator-pane-svg{height:112px}.earthcoin-drawing-style-checks{grid-template-columns:1fr}}
.earthcoin-drawing-pane-vertical{fill:none;opacity:.78;vector-effect:non-scaling-stroke;pointer-events:none}


/* ── Haven v4.4 레이어: 하늘색·황금색 공통 디자인 시스템(/assets/haven/haven.css) ── */
.sitebar{background:rgba(250,253,255,.84);border-bottom-color:rgba(185,212,234,.6);-webkit-backdrop-filter:saturate(1.4) blur(16px);backdrop-filter:saturate(1.4) blur(16px)}
.mini-brand>span[aria-hidden]{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--hv-grad-sky);color:var(--hv-gold-300);font-size:.9rem;box-shadow:0 4px 10px rgba(28,123,201,.25)}
.mini-brand strong{color:var(--hv-ink);font-weight:800}
.version-label{color:var(--hv-gold-600)}
.eyebrow{color:var(--hv-gold-600)}
.auth-copy h1 span{background:linear-gradient(100deg,var(--hv-sky-600),var(--hv-sky-400));-webkit-background-clip:text;background-clip:text;color:transparent}
.auth-actions .btn.primary{color:var(--hv-ink);background:var(--hv-grad-gold);box-shadow:0 1px 0 rgba(255,255,255,.5) inset,var(--hv-shadow-gold)}
.btn{font-weight:700}

/* ── v4.4 구조 레이어: 떠 있는 남색 도크 + 방 사진 위에 얹은 첫 화면 패널 ── */
.sitebar{top:12px;width:min(calc(100% - 24px),1400px);margin:12px auto 0;min-height:58px;padding:8px 10px 8px 18px;border:0;border-radius:18px;background:linear-gradient(120deg,#0b1f38,#123158);color:#fff;box-shadow:0 14px 34px rgba(11,31,56,.22)}
.sitebar .back-link{color:#d7e8f8}
.sitebar .back-link:hover{color:#fff}
.sitebar .mini-brand strong{color:#fff}
.sitebar .version-label{color:var(--hv-gold-300)}
.sitebar button.sfx-toggle{border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:#fff;box-shadow:none}
@media(min-width:900px){
  .auth-hero{grid-template-columns:1fr;grid-template-areas:"stack";align-items:end}
  .auth-preview,.auth-copy{grid-area:stack}
  .auth-preview{max-width:none}
  .preview-room{border-width:0;border-radius:28px;aspect-ratio:16/8}
  .preview-room:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(11,31,56,.55) 0,rgba(11,31,56,.15) 45%,transparent 70%)}
  .auth-copy{position:relative;z-index:2;max-width:520px;margin:0 0 clamp(20px,3vw,36px) clamp(20px,3vw,36px);padding:clamp(22px,3vw,34px);border:1px solid rgba(255,255,255,.7);border-radius:24px;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 24px 60px rgba(11,31,56,.22)}
  .auth-copy h1{font-size:clamp(2.2rem,4vw,3.4rem)}
  .auth-lead{margin-top:16px;font-size:.98rem}
  .auth-actions{margin-top:22px}
  .preview-card{right:24px;top:24px;bottom:auto;z-index:2}
}
/* 화면 테마 버튼이 들어간 상단 바: 좁은 화면에서는 버전 표기를 숨기고 돌아가기 글자를 한 줄로 */
.sitebar .back-link{white-space:nowrap}
@media(max-width:560px){.sitebar .version-label{display:none}.sitebar-tools{gap:6px}}
/* 남색 상단 바 위의 화면 테마 버튼: 라이트·다크 모두 바에 어울리는 반투명 스타일 */
:root[data-theme] .sitebar .hv-theme-switch.hv-theme-switch{--ts-bg:rgba(255,255,255,.06);--ts-line:rgba(255,255,255,.18);--ts-icon:#9fbad6;--ts-icon-hover:#fff;--ts-on-bg:#ffd156;--ts-on-icon:#1a1300;--ts-hover-bg:rgba(255,255,255,.1);--ts-shadow:none}

/* ── v4.5 차트 스타일: 얇고 각진 선, 옅은 실선 격자, 세그먼트 시간봉, 사용자 캔들 색 ──
   상승·하락 색은 earthcoin.js 가 .earthcoin-panel 에 CSS 변수(--ec-up/--ec-down 및 파생값)로 넣는다.
   차트 높이는 카드에 맞춰 늘어나고(viewBox 높이를 상자에 맞춤), 상자 비율은 아래 aspect-ratio 로 정한다. */
.earthcoin-chart{aspect-ratio:760/260;height:auto}
/* 왼쪽 드로잉 도구 줄이 차트보다 길면, 차트가 그 높이까지 늘어나 카드 아래까지 채운다 */
.earthcoin-chart-stack{display:flex;flex-direction:column}
.earthcoin-chart-main-stage{display:flex;flex:1 1 auto;flex-direction:column}
.earthcoin-chart-main-stage>.earthcoin-chart{flex:1 1 auto}
.earthcoin-chart-shell{border-radius:10px}
.earthcoin-plot-bg{fill:#fcfdfe}
.earthcoin-price-scale-bg{fill:#fcfdfe}
.earthcoin-price-scale-separator{stroke:#e3eaf0;stroke-width:1}
.earthcoin-chart-grid{stroke:#edf2f6;stroke-width:1;stroke-dasharray:none}
.earthcoin-chart-grid.vertical{stroke:#f1f5f8}
.earthcoin-price-tick,.earthcoin-time-tick{fill:#7a8d9c;font-weight:700}
.earthcoin-chart-line{stroke:var(--ec-up);stroke-width:1.6}
.earthcoin-chart-line.down{stroke:var(--ec-down)}
.earthcoin-area-stop.top.up{stop-color:var(--ec-up);stop-opacity:.2}
.earthcoin-area-stop.top.down{stop-color:var(--ec-down);stop-opacity:.2}
.earthcoin-area-stop.bottom{stop-color:#fcfdfe;stop-opacity:0}
.earthcoin-chart-area{stroke:none;pointer-events:none}
.earthcoin-chart-point{display:none}
.earthcoin-chart-point.latest{display:inline;fill:var(--ec-up);stroke:#fcfdfe;stroke-width:2}
.earthcoin-chart-line.down~.earthcoin-chart-point.latest{fill:var(--ec-down)}
.earthcoin-candle-wick{stroke-width:1}
.earthcoin-candle-wick.up{stroke:var(--ec-up)}.earthcoin-candle-wick.down{stroke:var(--ec-down)}
.earthcoin-candle-body.up{fill:var(--ec-up);stroke:none}
.earthcoin-candle-body.down{fill:var(--ec-down);stroke:none}
.earthcoin-macd-histogram{opacity:.55}.earthcoin-macd-histogram.up{fill:var(--ec-up)}.earthcoin-macd-histogram.down{fill:var(--ec-down)}
.earthcoin-current-guide{stroke:var(--ec-up);stroke-width:1;stroke-dasharray:2 3;opacity:.75}
.earthcoin-current-guide.down{stroke:var(--ec-down)}
.earthcoin-current-label rect{fill:var(--ec-up)}
.earthcoin-current-label text{fill:var(--ec-up-on);font-weight:800}
.earthcoin-current-label.down rect{fill:var(--ec-down)}
.earthcoin-current-label.down text{fill:var(--ec-down-on)}
.earthcoin-cursor-price-line{stroke:#8797a4;stroke-dasharray:2 3}
.earthcoin-cursor-price-label-bg{fill:#35495b}
.earthcoin-cursor-price-label{font-weight:800}

/* 시간봉: 붙어 있는 세그먼트 버튼 */
.earthcoin-timeframes{display:inline-flex;flex-wrap:nowrap;gap:0;padding:2px;border:1px solid #d3dfe8;border-radius:8px;background:#f2f6f9;max-width:100%;overflow-x:auto;scrollbar-width:none}
.earthcoin-timeframes::-webkit-scrollbar{display:none}
.earthcoin-timeframe-btn{min-height:30px;border:0;border-radius:6px;padding:5px 11px;background:transparent;color:#5b7183;font-weight:800;white-space:nowrap}
.earthcoin-timeframe-btn:hover{background:#e6eef4;color:#24435b}
.earthcoin-timeframe-btn.active{background:#0f2a47;color:#fff;box-shadow:0 1px 2px rgba(15,42,71,.25)}
.earthcoin-reset-btn,.earthcoin-indicator-toggle,.earthcoin-ranking-open,.earthcoin-candle-toggle{border-radius:8px}

/* 등락·매수/매도는 캔들 색을 따른다 */
.earthcoin-daily-rate.up{background:var(--ec-up-soft);color:var(--ec-up-text)}
.earthcoin-daily-rate.down{background:var(--ec-down-soft);color:var(--ec-down-text)}
.earthcoin-outcome.up,.earthcoin-ranking-table td.up,.earthcoin-position-outcome.up{color:var(--ec-up-text)}
.earthcoin-outcome.down,.earthcoin-ranking-table td.down,.earthcoin-position-outcome.down{color:var(--ec-down-text)}
.earthcoin-position-badge.long,.earthcoin-ranking-side.long{border-color:var(--ec-up-line);background:var(--ec-up-soft);color:var(--ec-up-text)}
.earthcoin-position-badge.short,.earthcoin-ranking-side.short{border-color:var(--ec-down-line);background:var(--ec-down-soft);color:var(--ec-down-text)}
.earthcoin-position-side.long:hover:not(:disabled),.earthcoin-position-side.long.active{border-color:var(--ec-up-line);background:var(--ec-up-soft);color:var(--ec-up-text)}
.earthcoin-position-side.short:hover:not(:disabled),.earthcoin-position-side.short.active{border-color:var(--ec-down-line);background:var(--ec-down-soft);color:var(--ec-down-text)}
.earthcoin-ticket-context.buy{border-color:var(--ec-up-line);background:var(--ec-up-soft)}
.earthcoin-ticket-context.sell{border-color:var(--ec-down-line);background:var(--ec-down-soft)}
.earthcoin-action-preview.buy{border-color:var(--ec-up-line)}
.earthcoin-action-preview.sell{border-color:var(--ec-down-line)}
.earthcoin-panel .earthcoin-action-buy{border-color:var(--ec-up)!important;background:var(--ec-up)!important;color:var(--ec-up-on)!important}
.earthcoin-panel .earthcoin-action-sell{border-color:var(--ec-down)!important;background:var(--ec-down)!important;color:var(--ec-down-on)!important}
.earthcoin-panel .earthcoin-action-buy:hover:not(:disabled),.earthcoin-panel .earthcoin-action-sell:hover:not(:disabled){filter:brightness(1.06)}
.earthcoin-panel .earthcoin-action-buy:disabled,.earthcoin-panel .earthcoin-action-sell:disabled{border-color:#d2dce4!important;background:#e7edf1!important;color:#8b9daa!important;filter:none}

/* 캔들 색 설정 */
.earthcoin-candle-control{position:relative}
.earthcoin-candle-toggle{display:inline-flex;align-items:center;gap:6px;min-height:34px;border:1px solid #c6d9e7;padding:6px 10px;background:#fff;color:#476276;font:inherit;font-size:.72rem;font-weight:900;line-height:1;white-space:nowrap;cursor:pointer}
.earthcoin-candle-toggle:hover{border-color:#8fb3ce;background:#f4f9fd}
.earthcoin-candle-toggle:focus-visible,.earthcoin-candle-preset:focus-visible,.earthcoin-candle-custom input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.earthcoin-candle-swatch{display:inline-flex;gap:2px}
.earthcoin-candle-swatch i{display:block;width:5px;height:12px;border-radius:1px}
.earthcoin-candle-toggle .earthcoin-candle-swatch i.up{background:var(--ec-up)}
.earthcoin-candle-toggle .earthcoin-candle-swatch i.down{background:var(--ec-down)}
.earthcoin-candle-popover{position:absolute;top:calc(100% + 6px);right:0;z-index:9;display:grid;gap:9px;width:248px;max-width:calc(100vw - 32px);padding:11px;border:1px solid #c8d7e3;border-radius:10px;background:#fff;box-shadow:0 12px 30px rgba(31,62,86,.16)}
.earthcoin-candle-popover[hidden]{display:none}
.earthcoin-candle-popover-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.earthcoin-candle-popover-head strong{color:#203d55;font-size:.78rem}
.earthcoin-candle-popover-head small{color:#7a8d9c;font-size:.6rem;font-weight:800}
.earthcoin-candle-presets{display:grid;gap:5px}
.earthcoin-candle-preset{display:flex;align-items:center;gap:9px;min-height:40px;width:100%;border:1px solid #d6e1ea;border-radius:8px;padding:6px 9px;background:#f9fbfd;color:#2f4b61;font:inherit;text-align:left;cursor:pointer}
.earthcoin-candle-preset:hover{border-color:#a9c2d5;background:#fff}
.earthcoin-candle-preset[aria-pressed="true"]{border-color:#0f2a47;background:#fff;box-shadow:inset 0 0 0 1px #0f2a47}
.earthcoin-candle-preset .earthcoin-candle-swatch i{width:7px;height:16px}
.earthcoin-candle-preset-copy{display:grid;gap:2px}
.earthcoin-candle-preset-copy b{font-size:.72rem;font-weight:900}
.earthcoin-candle-preset-copy small{color:#6f8496;font-size:.6rem;font-weight:800}
.earthcoin-candle-custom{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding-top:9px;border-top:1px solid #e4ebf1}
.earthcoin-candle-custom label{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:36px;border:1px solid #d6e1ea;border-radius:8px;padding:4px 5px 4px 9px;color:#46617a;font-size:.66rem;font-weight:900}
.earthcoin-candle-custom input{width:34px;height:26px;border:1px solid #cbd8e2;border-radius:5px;padding:1px;background:#fff;cursor:pointer}
.earthcoin-candle-status{min-height:1em;margin:0;color:#5f7587;font-size:.62rem;font-weight:800;line-height:1.35}
.earthcoin-candle-status:empty{display:none}
.earthcoin-candle-status[data-kind="error"]{color:#b0384f}
.earthcoin-candle-status[data-kind="ok"]{color:#2c6b56}
@media(max-width:520px){.earthcoin-surface-embedded .earthcoin-chart{min-height:210px}}
@media(max-width:620px){
  .earthcoin-timeframes{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));width:100%}
  .earthcoin-timeframe-btn{min-width:0;padding-inline:2px;font-size:.66rem}
  .earthcoin-candle-control{position:static}
  .earthcoin-candle-popover{right:0;left:auto}
}
/* 4단계: 미션 패널(출석·오늘의 미션·업적·세트·도감·칭호), 긴 알바, 칭호 표시 */
.game-menu{grid-template-columns:repeat(8,minmax(0,1fr))}
.game-menu button{position:relative}
.game-menu button.has-dot::after{content:"";position:absolute;top:9px;right:12px;width:10px;height:10px;border-radius:50%;background:#e2465f;box-shadow:0 0 0 3px #fbfdff}
.hud-title{color:#9a6a00;font-size:.7rem;font-weight:950;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.hud-title[hidden]{display:none}
.title-badge{display:inline-block;margin-left:7px;padding:2px 8px;border:1px solid #f0cf73;border-radius:999px;background:#fff6d8;color:#7a5600;font-size:.64rem;font-weight:950;vertical-align:middle;white-space:nowrap}
.job-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:4px 2px 10px}
.job-section-head:not(:first-child){margin-top:22px;padding-top:16px;border-top:1px solid var(--line)}
.job-section-head h3{margin:0;font-size:1rem;letter-spacing:-.02em}
.job-section-head p{margin:0;color:var(--muted);font-size:.74rem;text-align:right}
.job-card.long-job{border-color:#c9daf0;background:linear-gradient(180deg,#f7fbff,#fff)}
.job-card.long-job .job-meta span:first-child{background:#e8eefb;color:#2b4f86;font-weight:900}

.tab-btn{position:relative}
.pg-dot{display:inline-block;width:7px;height:7px;margin-left:6px;border-radius:50%;background:#e2465f;vertical-align:middle}
.tab-btn.active .pg-dot{background:#ffd156}
.pg-body{display:grid;gap:14px}
.pg-lead{margin:0;color:var(--muted);font-size:.8rem;line-height:1.55}
.pg-card{min-width:0;border:1px solid var(--line);border-radius:18px;padding:16px;background:#fff;box-shadow:0 5px 14px rgba(31,83,118,.06)}
.pg-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.pg-card-head h3{margin:2px 0 0;font-size:1.08rem;letter-spacing:-.03em}
.pg-chip{flex:0 0 auto;padding:5px 10px;border:1px solid var(--line);border-radius:999px;background:#f3f8fc;color:#3e5d77;font-size:.7rem;font-weight:950;font-variant-numeric:tabular-nums;white-space:nowrap}
.pg-note{margin:12px 0 0;color:var(--muted);font-size:.72rem;line-height:1.55}
.pg-cycle{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:0;padding:0;list-style:none}
.pg-cycle-day{position:relative;display:grid;gap:3px;justify-items:center;padding:10px 4px 9px;border:1px solid var(--line);border-radius:13px;background:#f6fafd;text-align:center}
.pg-cycle-day strong{font-size:.72rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.pg-cycle-label{color:var(--muted);font-size:.64rem;font-weight:900}
.pg-cycle-day.done{border-color:#a9d8c6;background:#ecf8f3}
.pg-cycle-day.done strong{color:#1f775f}
.pg-cycle-day.today{border-color:#f0c34a;background:#fff7dc;box-shadow:0 0 0 2px rgba(246,186,34,.28)}
.pg-cycle-day:last-child strong{color:#9a6a00}
.pg-cycle-mark{position:absolute;top:4px;right:6px;color:#1f775f;font-size:.66rem;font-weight:950}
.pg-attend{width:100%;margin-top:12px}
.pg-list{display:grid;gap:8px}
.pg-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fbfdff}
.pg-row.ready{border-color:#f0c34a;background:#fffaea}
.pg-row.claimed{opacity:.72}
.pg-row-info{display:grid;gap:5px;min-width:0}
.pg-row-info h4{margin:0;font-size:.9rem;letter-spacing:-.02em}
.pg-row-info p{margin:0;color:var(--muted);font-size:.72rem;line-height:1.45}
.pg-row-side{display:grid;justify-items:end;gap:6px}
.pg-reward{color:#7a5600;font-size:.74rem;font-weight:950;font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
.pg-claim{min-height:38px;min-width:84px;padding:7px 12px;font-size:.76rem;box-shadow:none}
.pg-bonus{border-style:dashed}
.pg-meter{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.pg-meter-track{height:8px;border-radius:999px;background:#e1ebf3;overflow:hidden}
.pg-meter-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#5cb4f2,#1c7bc9);transition:width .3s ease}
.pg-row.ready .pg-meter-fill,.pg-row.claimed .pg-meter-fill{background:linear-gradient(90deg,#ffd156,#f6ba22)}
.pg-meter-text{color:#4c667c;font-size:.68rem;font-weight:900;font-variant-numeric:tabular-nums;white-space:nowrap}
.pg-set-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pg-set.ready{border-color:#f0c34a;background:#fffdf4}
.pg-set.claimed{opacity:.78}
.pg-set-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px;margin:0;padding:0;list-style:none}
.pg-set-items li{display:grid;gap:4px;justify-items:center;padding:7px 5px;border:1px solid var(--line);border-radius:12px;background:#f8fbfe;text-align:center}
.pg-set-items img{width:100%;max-width:64px;aspect-ratio:1;object-fit:contain}
.pg-set-items span{font-size:.64rem;font-weight:850;line-height:1.3}
.pg-set-items li.missing img{opacity:.32;filter:grayscale(1)}
.pg-set-items li.missing span{color:var(--muted)}
.pg-set-items li.owned{border-color:#a9d8c6;background:#f1faf6}
.pg-set-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}
.pg-milestones{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.pg-milestone{display:grid;gap:5px;align-content:start;padding:10px;border:1px solid var(--line);border-radius:13px;background:#f8fbfe}
.pg-milestone strong{font-size:1rem}
.pg-milestone span{color:var(--muted);font-size:.66rem;font-weight:850;line-height:1.4}
.pg-milestone.ready{border-color:#f0c34a;background:#fffaea}
.pg-milestone.claimed{border-color:#a9d8c6;background:#f1faf6}
.pg-milestone .pg-claim{width:100%;min-width:0}
.pg-collection-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.pg-collection-item{display:grid;gap:5px;margin:0;padding:8px;border:1px solid var(--line);border-radius:14px;background:#fff;text-align:center}
.pg-collection-item img{width:100%;aspect-ratio:1;object-fit:contain;border-radius:10px;background:#f5fbff}
.pg-collection-item figcaption{display:grid;gap:1px}
.pg-collection-item strong{font-size:.72rem}
.pg-collection-item span{color:var(--muted);font-size:.6rem;font-weight:850}
.pg-collection-item:not(.seen){background:#f3f6f9}
.pg-collection-item img.pg-silhouette{background:transparent;filter:brightness(0);opacity:.18}
.pg-title-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.pg-title{display:grid;gap:6px;align-content:start;padding:14px;border:1px solid var(--line);border-radius:16px;background:#f6f9fb;color:var(--muted)}
.pg-title.owned{border-color:#f0cf73;background:#fffaea;color:var(--ink)}
.pg-title.equipped{box-shadow:0 0 0 2px #f6ba22}
.pg-title-name{font-size:1rem;letter-spacing:-.02em}
.pg-title p{margin:0;font-size:.72rem;line-height:1.45}
.pg-title .btn{min-height:38px;padding:7px 12px;font-size:.76rem;box-shadow:none}
@media(max-width:980px){.game-menu{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.game-menu{grid-template-columns:repeat(4,minmax(0,1fr))}.pg-set-grid{grid-template-columns:1fr}.pg-milestones{grid-template-columns:repeat(2,minmax(0,1fr))}.job-section-head{display:grid;gap:3px}.job-section-head p{text-align:left}}
@media(max-width:520px){.pg-card{padding:12px;border-radius:15px}.pg-cycle{gap:4px}.pg-cycle-day{padding:8px 2px}.pg-cycle-day strong{font-size:.62rem}.pg-row{grid-template-columns:1fr;gap:8px}.pg-row-side{grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-items:stretch}.pg-reward{text-align:left}.pg-collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.game-menu button.has-dot::after{top:6px;right:8px}}
@media(prefers-reduced-motion:reduce){.pg-meter-fill{transition:none}}
@media(forced-colors:active){.pg-card,.pg-row,.pg-cycle-day,.pg-title,.pg-milestone{border:1px solid CanvasText}.pg-meter-fill{background:Highlight}}
