@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap";.app-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);max-width:720px;margin:0 auto;padding:var(--sp-3) var(--sp-4);background:var(--bg)}.app-brand{display:flex;cursor:pointer;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:600;letter-spacing:-.01em}.app-brand:disabled{cursor:default}.app-actions{display:flex;align-items:center;gap:var(--sp-1)}.app-eye{display:grid;place-items:center;width:36px;height:36px;color:var(--muted);border-radius:var(--r-full);transition:background var(--t-fast),color var(--t-fast)}.app-eye[aria-pressed=true]{color:var(--text);background:var(--surface-hi)}@media(min-width:1024px){.app-header{max-width:1040px;padding:var(--sp-4) var(--sp-5)}}@media(min-width:1440px){.app-header{max-width:1160px}}.bottom-nav{position:fixed;inset:auto 0 0 0;z-index:10;display:flex;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);background:var(--bg);border-top:1px solid var(--border)}.nav-btn{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:var(--fs-2xs);font-weight:500;transition:color var(--t-fast);min-height:var(--nav-h)}.nav-btn.is-active{color:var(--text)}@media(min-width:720px){.bottom-nav{left:50%;bottom:var(--sp-4);transform:translate(-50%);width:min(420px,calc(100% - var(--sp-5)));height:var(--nav-h);padding-bottom:0;border:1px solid var(--border);border-radius:var(--r-full);box-shadow:var(--shadow-lg)}.nav-btn:first-child{border-top-left-radius:var(--r-full);border-bottom-left-radius:var(--r-full)}.nav-btn:last-child{border-top-right-radius:var(--r-full);border-bottom-right-radius:var(--r-full)}}.state{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-6) var(--sp-4);text-align:center}.state p{margin:0}.state-spin{animation:spin .9s linear infinite;color:var(--muted)}@keyframes spin{to{transform:rotate(360deg)}}.state-retry{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1px solid var(--border-hi);border-radius:var(--r-full);font-size:var(--fs-sm);font-weight:500}.state-retry:hover{background:var(--surface-hi)}.lock{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4)}.lock-card{width:min(340px,100%);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-5);text-align:center}.lock-card h1{margin:0;font-size:var(--fs-xl);font-weight:700;letter-spacing:-.02em}.lock-card p{margin:0;font-size:var(--fs-sm)}.lock-error{font-size:var(--fs-sm)}.lock-unlock{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);margin-top:var(--sp-2);padding:var(--sp-3);background:var(--text);color:var(--bg);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600}.lock-unlock:disabled{opacity:.6;cursor:default}.lock-out{padding:var(--sp-2);font-size:var(--fs-sm);text-decoration:underline}.lock-pass{display:flex;flex-direction:column;gap:var(--sp-2);width:100%}.lock-pass input{width:100%;padding:var(--sp-3);background:var(--bg);border:1px solid var(--border-hi);border-radius:var(--r-sm);font-size:var(--fs-lg);text-align:center}.lock-pass input:focus-visible{outline:none;border-color:var(--text);box-shadow:var(--ring)}.login{min-height:100dvh;display:grid;place-items:center;padding:var(--sp-4)}.login-card{width:min(380px,100%);display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow)}.login-head h1{margin:0;font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.03em}.login-head p{margin:var(--sp-1) 0 0;font-size:var(--fs-sm)}.login-error{margin:0;font-size:var(--fs-sm)}.login-submit{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--text);color:var(--bg);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600;transition:opacity var(--t-fast)}.login-submit:disabled{opacity:.6;cursor:default}.login-spin{animation:spin .9s linear infinite}.login-hint{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-xs);line-height:1.4}.login-hint svg{flex:none}.position{display:block;width:100%;padding:var(--sp-4);text-align:left;transition:border-color var(--t-fast),background var(--t-fast)}.position:hover{border-color:var(--border-hi)}.position:active{background:var(--surface-hi)}.position-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3)}.position-name{display:block;font-size:var(--fs-lg);font-weight:600;letter-spacing:-.01em}.position-type{font-size:var(--fs-xs)}.position-value{display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-left:auto}.position-value strong{font-size:var(--fs-lg);font-weight:600}.position-delta{font-size:var(--fs-xs);font-weight:500}.position-go{flex:none;margin-top:var(--sp-1)}.position-bar{height:4px;margin:var(--sp-3) 0;background:var(--surface-hi);border-radius:var(--r-full);overflow:hidden}.position-bar span{display:block;height:100%;background:var(--text-2);border-radius:var(--r-full)}.position-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin:0}.position-grid dt{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.06em}.position-grid dd{margin:2px 0 0;font-size:var(--fs-sm);font-weight:500}.position-range{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);font-size:var(--fs-xs)}.position-range-values{display:flex;align-items:center;gap:var(--sp-3);font-weight:500}.position-range-item{display:flex;align-items:center;gap:var(--sp-1)}.position-carried{display:flex;align-items:center;gap:var(--sp-1);margin:var(--sp-3) 0 0;font-size:var(--fs-xs)}.positions-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-3)}.positions-head .section-title{margin:0}.positions{display:flex;flex-direction:column;gap:var(--sp-3);margin:0;padding:0;list-style:none}.positions-foot{margin:var(--sp-4) 0 0;font-size:var(--fs-xs);text-align:center}.confirm{width:min(340px,calc(100% - var(--sp-5)));padding:var(--sp-5);background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}.confirm::backdrop{background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.confirm h2{margin:0;font-size:var(--fs-lg);font-weight:600}.confirm p{margin:var(--sp-2) 0 0;font-size:var(--fs-sm)}.confirm-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-5)}.confirm-actions button{flex:1 1 0;padding:var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600}.confirm-cancel{border:1px solid var(--border-hi)}.confirm-ok{background:var(--text);color:var(--bg)}.confirm-ok.danger{background:var(--down);color:#fff}.settings{display:flex;flex-direction:column;gap:var(--sp-5)}.setting-group{margin:0}.setting{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-md);font-weight:500}.setting+.setting{margin-top:var(--sp-2)}.setting small{display:block;font-size:var(--fs-xs);font-weight:400}@media(max-width:400px){.segment span{display:none}}.switch{position:relative;width:44px;height:26px;background:var(--border-hi);border-radius:var(--r-full);transition:background var(--t-fast);flex:none}.switch.is-on{background:var(--text)}.switch span{position:absolute;top:3px;left:3px;width:20px;height:20px;background:var(--bg);border-radius:var(--r-full);transition:transform var(--t)}.switch.is-on span{transform:translate(18px)}.setting-form{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4)}.setting-hint{margin:0;font-size:var(--fs-xs)}.save{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--text);color:var(--bg);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600}.save:disabled{opacity:.6;cursor:default}.setting-list{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-4);font-size:var(--fs-sm)}.setting-list p{margin:0}.setting-list .is-you{font-weight:600}.logout{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border-hi);border-radius:var(--r-sm);color:var(--down);font-size:var(--fs-md);font-weight:500}.setting-action{width:100%;margin-top:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border-hi);border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:500}.settings-version{margin:0;font-size:var(--fs-2xs);text-align:center}.field input:disabled{color:var(--muted);background:var(--surface-hi);cursor:default}.boundary{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-5);text-align:center}.boundary p{margin:0;font-size:var(--fs-md);color:var(--muted)}.boundary button{padding:var(--sp-3) var(--sp-5);background:var(--text);color:var(--bg);border-radius:var(--r-sm);font-size:var(--fs-md);font-weight:600}.boundary-detail{max-width:32rem;padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);font-family:var(--font-mono);font-size:var(--fs-xs);line-height:1.5;color:var(--muted);-webkit-user-select:text;user-select:text;word-break:break-word}:root,[data-theme=light]{color-scheme:light;--bg: #ffffff;--surface: #fafafa;--surface-hi: #f4f4f5;--border: #e5e5e5;--border-hi: #d4d4d4;--text: #0a0a0a;--text-2: #404040;--muted: #737373;--muted-2: #a3a3a3;--up: #15803d;--up-soft: #dcfce7;--down: #b91c1c;--down-soft: #fee2e2;--shadow: 0 1px 2px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .12);--ring: 0 0 0 3px rgba(10, 10, 10, .12)}[data-theme=dark]{color-scheme:dark;--bg: #0a0a0a;--surface: #141414;--surface-hi: #1c1c1c;--border: #262626;--border-hi: #383838;--text: #fafafa;--text-2: #d4d4d4;--muted: #a3a3a3;--muted-2: #737373;--up: #22c55e;--up-soft: #052e16;--down: #ef4444;--down-soft: #450a0a;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .6);--ring: 0 0 0 3px rgba(250, 250, 250, .16)}:root{--fs-2xs: 10px;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 20px;--fs-2xl: 26px;--fs-3xl: 34px;--fs-4xl: 44px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-full: 999px;--t-fast: .12s cubic-bezier(.4, 0, .2, 1);--t: .2s cubic-bezier(.4, 0, .2, 1);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", monospace;--safe-b: env(safe-area-inset-bottom, 0px);--nav-h: 56px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}input{font:inherit;color:inherit}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.up{color:var(--up)}.down{color:var(--down)}.muted{color:var(--muted)}.logo{display:block;height:auto}[data-theme=dark] .logo{filter:invert(1)}.app{min-height:100%;padding-bottom:calc(var(--nav-h) + var(--safe-b) + var(--sp-5))}.view{max-width:720px;margin:0 auto;padding:0 var(--sp-4) var(--sp-4)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.no-select,.no-select:focus{outline:none;-webkit-user-select:none;user-select:none}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}.range-chips{display:flex;gap:var(--sp-2)}.chip{padding:var(--sp-1) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-full);font-size:var(--fs-xs);font-weight:500;color:var(--muted);white-space:nowrap;transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast)}.chip.is-active{background:var(--text);border-color:var(--text);color:var(--bg)}.segmented{display:flex;gap:2px;padding:2px;background:var(--surface-hi);border-radius:var(--r-full)}.segment{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-full);color:var(--muted);font-size:var(--fs-xs);font-weight:500;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.segment.is-active{background:var(--bg);color:var(--text);box-shadow:var(--shadow)}.field{display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:500}.field input{width:100%;padding:var(--sp-3);background:var(--bg);border:1px solid var(--border-hi);border-radius:var(--r-sm);font-size:var(--fs-lg);transition:box-shadow var(--t-fast),border-color var(--t-fast)}.field input:focus-visible{outline:none;border-color:var(--text);box-shadow:var(--ring)}.field-pass{position:relative}.field-eye{position:absolute;top:50%;right:var(--sp-3);transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;color:var(--muted)}.section-title{font-size:var(--fs-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--sp-3)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(min-width:720px){.view{padding:var(--sp-5) var(--sp-4)}.summary-total{font-size:56px}.summary-chart-box{height:280px}}@media(min-width:1024px){.view{max-width:1040px;padding:var(--sp-6) var(--sp-5)}.summary{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"head periods" "chart chart" "foot foot";align-items:center;gap:var(--sp-4) var(--sp-5)}.summary-head{grid-area:head;margin-bottom:0}.summary-periods{grid-area:periods;margin-bottom:0}.summary-chart{grid-area:chart;padding:var(--sp-4)}.summary-chart-box{height:320px}.summary-foot{grid-area:foot;margin:0}.positions{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.settings{max-width:560px}}@media(min-width:1440px){.view{max-width:1160px}}
