:root{--bg0: #0f1c17;--bg1: #173328;--ink: #e8f2ec;--muted: #9bb5a8;--accent: #3ecf8e;--warn: #f0b429;--danger: #ff6b6b;--font: "DM Sans", "Noto Sans SC", sans-serif}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#1f4d3a 0%,transparent 55%),radial-gradient(900px 500px at 90% 0%,#2a5a42 0%,transparent 50%),linear-gradient(165deg,var(--bg0),var(--bg1))}.shell{max-width:1100px;margin:0 auto;padding:28px 24px 64px}.app-layout.with-sidebar .shell{margin-left:360px;max-width:calc(100% - 380px)}.framework-sidebar{position:fixed;top:0;left:0;width:340px;height:100vh;overflow:auto;background:#08100df5;border-right:1px solid rgba(232,242,236,.12);padding:20px 16px 40px;z-index:40}.sidebar-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:16px}.sidebar-head h2{margin:0 0 4px;font-size:1.1rem}.sidebar-body h3{margin:18px 0 8px;font-size:.95rem}.collapse-block{margin-bottom:8px}.collapse-title{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:none;background:transparent;color:var(--ink);font:inherit;font-size:.95rem;font-weight:600;padding:6px 0;cursor:pointer;text-align:left}.collapse-title:hover{color:var(--accent)}.cat-list{display:flex;flex-direction:column;gap:8px}.cat-card{padding:10px;border-radius:8px;background:#e8f2ec0a;display:flex;flex-direction:column;gap:6px}.cat-title{font-size:.85rem;font-weight:600}.cat-card input,.sidebar-body select,.dim-editor input,.dim-editor textarea,.dim-editor select{width:100%;border:1px solid rgba(232,242,236,.18);background:#0f1c178c;color:var(--ink);border-radius:8px;padding:8px 10px;font:inherit;font-size:.82rem;box-sizing:border-box}.dim-editor{margin-top:10px;display:flex;flex-direction:column;gap:8px}.dim-editor label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:.78rem}.dual-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.dual-summary.three-cards{grid-template-columns:1.15fr 1fr 1fr}.dual-summary.two-cards{grid-template-columns:1fr 1fr}.scheme-card{display:flex;flex-direction:column;gap:10px;padding:16px;border-radius:12px;background:#3ecf8e0f;border:1px solid rgba(232,242,236,.1)}.scheme-card .card-line{margin:0;min-height:1.4em}.scheme-card .card-line-1{min-height:28px;display:flex;align-items:center}.scheme-card .card-line-2{min-height:36px;display:flex;align-items:baseline}.scheme-card .card-line-3{font-size:.88rem;line-height:1.45}.scheme-card h3{margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.scheme-card .code-inline{font-weight:500;font-size:.85rem}.summary-status{margin:0;font-size:1.15rem;font-weight:700;line-height:1.3}.tag-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.tag-pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.78rem;line-height:1.4;color:#e8f2eceb;background:transparent;border:1px solid rgba(232,242,236,.45)}.scheme-card.summary-card{gap:16px;justify-content:space-between}.scheme-card.summary-card .card-line-1,.scheme-card.summary-card .card-line-2,.scheme-card.summary-card .card-line-3{min-height:0;margin:0}.scheme-card.summary-card .card-line-2{flex:1;display:flex;align-items:center}.scheme-card .score-big{text-align:left;display:flex;align-items:baseline;gap:10px}.scheme-card .score-big .value{font-size:2rem;line-height:1;font-weight:700}.scheme-card .score-big .label{color:var(--accent);font-size:.95rem;font-weight:600}.grouped-table .cat-row td{background:#e8f2ec0d;padding-top:14px;padding-bottom:10px}.grouped-table .total-row td{background:#3ecf8e1a;padding-top:14px;padding-bottom:14px;border-top:1px solid rgba(62,207,142,.28)}.grouped-table .total-row strong{color:var(--ink)}.grouped-table .cat-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px}.grouped-table .cat-standard{font-weight:400;font-size:.88rem}.grouped-table .dim-name{padding-left:18px}@media(max-width:960px){.app-layout.with-sidebar .shell{margin-left:0;max-width:1100px}.framework-sidebar{width:min(100%,360px)}.dual-summary,.dual-summary.three-cards{grid-template-columns:1fr}}.top{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:12px;margin:-28px -24px 20px;padding:14px 24px;background:#0c1612e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(232,242,236,.1)}.brand{font-size:1.2rem;font-weight:700;letter-spacing:.04em;justify-self:start}.top-stock{display:flex;align-items:center;gap:10px;justify-self:center}.top-stock input{width:108px;border:1px solid rgba(232,242,236,.18);background:#0f1c17bf;color:var(--ink);border-radius:8px;padding:8px 12px;font:inherit;font-weight:600;letter-spacing:.04em;text-align:center}.top-stock .stock-name{min-width:72px;font-size:.95rem;font-weight:600;white-space:nowrap}.top-right{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-self:end;justify-content:flex-end}.top nav{display:flex;align-items:center;gap:20px}.top a,.top .nav-link{color:var(--muted);text-decoration:none;font-size:.95rem;background:none;border:none;padding:0;font:inherit;font-weight:400;cursor:pointer}.top a:hover,.top .nav-link:hover{color:var(--ink)}.top-auth{display:flex;align-items:center;gap:6px;padding-left:16px;border-left:1px solid rgba(232,242,236,.16);font-size:.9rem;position:relative}.top-auth .auth-sep{color:#e8f2ec59}.user-avatar{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#3ecf8e2e;border:1px solid rgba(62,207,142,.4);color:var(--accent);font-size:.82rem;font-weight:700;flex-shrink:0}.user-avatar.sm{width:28px;height:28px;font-size:.78rem}.user-avatar.ghost{background:transparent;border-color:#e8f2ec47;color:var(--muted)}.user-login-btn,.user-menu-trigger{display:inline-flex;align-items:center;gap:8px;border:none;background:transparent;color:var(--ink);font:inherit;font-size:.9rem;cursor:pointer;padding:2px 4px;border-radius:999px}.user-login-btn:hover,.user-menu-trigger:hover,.user-menu.open .user-menu-trigger{background:#e8f2ec0f}.user-menu{position:relative}.user-menu-name{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-caret{color:var(--muted);font-size:.7rem;line-height:1}.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;padding:8px;border-radius:12px;background:#0f1c17fa;border:1px solid rgba(232,242,236,.14);box-shadow:0 14px 36px #00000059;z-index:60}.user-menu-meta{display:flex;align-items:center;gap:10px;padding:8px 8px 10px;margin-bottom:4px;border-bottom:1px solid rgba(232,242,236,.1)}.user-menu-meta-name{font-weight:600;font-size:.92rem}.user-menu-meta-user{font-size:.78rem;margin-top:2px}.user-menu-dropdown button{display:block;width:100%;text-align:left;border:none;background:transparent;color:var(--ink);font:inherit;font-size:.9rem;padding:9px 10px;border-radius:8px;cursor:pointer}.user-menu-dropdown button:hover{background:#3ecf8e1a}.user-menu-dropdown button.dangerish{color:#ff9b9b}.user-menu-dropdown button.dangerish:hover{background:#ff6b6b1f}.score-actions{margin-bottom:14px}.score-actions button{border:none;border-radius:8px;padding:10px 16px;background:var(--accent);color:#0f1c17;font:inherit;font-weight:600;cursor:pointer}.score-actions button:disabled{opacity:.6;cursor:wait}.eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;margin:0}.lead{color:var(--muted);max-width:40rem;line-height:1.6;margin:0 0 18px}.status,.status-row{font-size:.95rem}.status-row{display:flex;flex-wrap:wrap;gap:16px 24px}.ok{color:var(--accent)}.bad{color:var(--danger)}.muted{color:var(--muted);margin:0;line-height:1.5}.panel{margin-top:36px;padding-top:28px;border-top:1px solid rgba(232,242,236,.12)}.panel h2{margin:0 0 8px;font-size:1.2rem}.panel ul{margin:0;padding-left:1.2rem;color:var(--muted);line-height:1.8}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.chart-head h2{margin:0;white-space:nowrap}.chart-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.code-form{display:flex;align-items:center;gap:8px}.code-form input{width:128px;border:1px solid rgba(232,242,236,.18);background:#0f1c178c;color:var(--ink);border-radius:8px;padding:10px 12px;font:inherit}.code-form button{border:none;border-radius:8px;padding:10px 16px;background:var(--accent);color:#0f1c17;font:inherit;font-weight:600;cursor:pointer}.code-form button:disabled{opacity:.6;cursor:wait}.period-switch.indicator-chips .chip{min-width:36px;text-align:center;font-weight:600}.score-form select{border:1px solid rgba(232,242,236,.18);background:#0f1c178c;color:var(--ink);border-radius:8px;padding:10px 12px;font:inherit}.resolved-name{display:inline-flex;align-items:center;min-width:88px;height:40px;line-height:1;font-size:.95rem;font-weight:600}.screen-steps{margin:16px 0}.screen-steps h4{margin:0 0 8px;font-size:.95rem}.screen-steps ul{margin:0;padding-left:1.1rem;line-height:1.7;color:var(--muted);font-size:.88rem}.chart-panel .kline-chart{width:100%;height:640px;margin-top:8px;border-radius:12px;background:#08100d59}.chart-body{position:relative;margin-top:8px;min-height:640px}.chart-body .kline-chart{margin-top:0}.chart-body.is-busy .kline-chart{opacity:.28;pointer-events:none;filter:saturate(.7)}.chart-loading{position:relative;width:100%;height:640px;border-radius:12px;background:#08100d59;overflow:hidden}.chart-loading.is-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:#08100d8c;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.chart-skeleton{display:flex;flex-direction:column;height:100%;padding:28px 24px 36px 48px;gap:10px;box-sizing:border-box}.skel-block{position:relative;border-radius:8px;background:#e8f2ec08;overflow:hidden}.skel-main{flex:1 1 48%;min-height:0}.skel-vol{flex:0 0 14%;min-height:56px}.skel-sub{flex:0 0 22%;min-height:88px}.skel-bars{display:flex;align-items:flex-end;justify-content:space-between;gap:4px;height:100%;padding:12px 8px 8px;box-sizing:border-box}.skel-bars-sm{padding-top:8px}.skel-bar{flex:1;border-radius:2px 2px 0 0;background:#e8f2ec1a;animation:skel-pulse 1.2s ease-in-out infinite}.skel-wave{position:absolute;top:18%;right:8%;bottom:22%;left:8%;border-radius:999px;background:#e8f2ec14;animation:skel-wave 1.6s ease-in-out infinite}.chart-loading-label{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:#0c1612e0;border:1px solid rgba(62,207,142,.35);color:#e8f2ec;font-size:.92rem;font-weight:600;letter-spacing:.04em;white-space:nowrap;box-shadow:0 8px 24px #00000059}.chart-loading-spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(62,207,142,.25);border-top-color:#3ecf8e;animation:chart-spin .7s linear infinite}.chart-loading-dots i{display:inline-block;animation:chart-dot 1.2s infinite;opacity:.25;font-style:normal}.chart-loading-dots i:nth-child(2){animation-delay:.2s}.chart-loading-dots i:nth-child(3){animation-delay:.4s}@keyframes skel-pulse{0%,to{opacity:.45}50%{opacity:1}}@keyframes skel-wave{0%,to{transform:scaleY(.7);opacity:.45}50%{transform:scaleY(1);opacity:.9}}@keyframes chart-spin{to{transform:rotate(360deg)}}@keyframes chart-dot{0%,80%,to{opacity:.2}40%{opacity:1}}@media(prefers-reduced-motion:reduce){.skel-bar,.skel-wave,.chart-loading-spinner,.chart-loading-dots i{animation:none}}.indicator-picker{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px 28px;margin-bottom:8px}.indicator-group,.indicator-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.indicator-row-label{flex:0 0 36px;font-size:.8rem;color:var(--muted, #9bb5a8)}.indicator-chips{display:flex;flex-wrap:wrap;gap:6px}.indicator-chips .chip{border:1px solid rgba(232,242,236,.16);background:#0f1c1773;color:#9bb5a8;border-radius:999px;padding:4px 12px;font:inherit;font-size:.8rem;cursor:pointer}.indicator-chips .chip:hover:not(:disabled){border-color:#3ecf8e73;color:#e8f2ec}.indicator-chips .chip.active{background:#3ecf8e2e;border-color:#3ecf8e8c;color:#3ecf8e;font-weight:600}.indicator-chips .chip.disabled,.indicator-chips .chip:disabled{opacity:.38;cursor:not-allowed}.meta{margin-top:12px;font-size:.9rem}.login-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px}.login-form.compact{margin-top:0}.login-form.compact input{width:96px;padding:6px 10px;font-size:.88rem}.login-form.compact button{padding:6px 12px;font-size:.88rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;background:#040a089e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.modal-card{width:min(100%,380px);padding:22px 22px 20px;border-radius:14px;background:#0f1c17f5;border:1px solid rgba(232,242,236,.14);box-shadow:0 18px 48px #00000059}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-head h2{margin:0;font-size:1.15rem}.modal-close{border:none;background:transparent;color:var(--muted);font-size:1.4rem;line-height:1;cursor:pointer;padding:0 4px}.modal-close:hover{color:var(--ink)}.modal-hint{margin:10px 0 16px;font-size:.88rem;line-height:1.45}.login-form.modal-form{margin-top:0;flex-direction:column;align-items:stretch}.login-form.modal-form input{width:100%}.login-form .ok-msg{color:#7dcca0;font-size:.88rem}.login-form input{border:1px solid rgba(232,242,236,.18);background:#0f1c178c;color:var(--ink);border-radius:8px;padding:10px 12px;font:inherit;width:140px}.login-form button,.actions-row button,.linkish{border:none;border-radius:8px;padding:10px 16px;background:var(--accent);color:#0f1c17;font:inherit;font-weight:600;cursor:pointer}.linkish{background:transparent;color:var(--muted);padding:0;text-decoration:underline}.rules-editor,.score-runner{margin-top:16px}.field-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.field-row label,.block-label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:.85rem;flex:1}.block-label{margin-bottom:12px}.field-row input,.block-label textarea{border:1px solid rgba(232,242,236,.18);background:#08100d73;color:var(--ink);border-radius:8px;padding:10px 12px;font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;line-height:1.45;resize:vertical}.actions-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.score-result{margin-top:20px;padding:20px;border-radius:12px;background:#08100d66}.score-summary{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.score-summary h3{margin:0 0 6px}.score-big{text-align:right}.score-big .label{display:block;color:var(--muted);font-size:.75rem}.score-big .value{font-size:2.4rem;font-weight:700;color:var(--accent);line-height:1}.tags{color:var(--accent);margin:12px 0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0}.two-col h4{margin:0 0 6px;font-size:.9rem}.two-col p{margin:0;color:var(--muted);line-height:1.55;font-size:.9rem}.score-table{width:100%;border-collapse:collapse;font-size:.88rem}.score-table th,.score-table td{text-align:left;padding:10px 8px;border-top:1px solid rgba(232,242,236,.08);vertical-align:top}.score-table th.col-score,.score-table td.col-score{text-align:center;vertical-align:middle}.score-table th{color:var(--muted);font-weight:500}@media(max-width:720px){.two-col{grid-template-columns:1fr}}
