:root{--bg:#f7f6f3;--bg-elevated:#fff;--bg-sunken:#efeee9;--border:#ddd9d0;--text:#1c1b19;--text-muted:#6b6760;--accent:#5b4a9e;--accent-contrast:#fff;--harmonious:#2563eb;--hard:#dc2626;--minor:#9ca3af;--fire:#e8775a;--earth:#6b9e5b;--air:#d9b23c;--water:#4a90c4;--danger:#b4231f;--warn-bg:#fff3cd;--warn-border:#e8c468;--warn-text:#6b5416;--radius:8px;--shadow:0 2px 10px #00000014;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}:root[data-theme=dark]{--bg:#16151a;--bg-elevated:#211f27;--bg-sunken:#0f0e12;--border:#35323d;--text:#ece9f1;--text-muted:#9a95a6;--accent:#8b74e0;--accent-contrast:#16151a;--harmonious:#60a5fa;--hard:#f87171;--minor:#6b7280;--fire:#f0896a;--earth:#86c474;--air:#e6c868;--water:#6fb0e0;--warn-bg:#3a331a;--warn-border:#6b5416;--warn-text:#e8c468;--shadow:0 2px 14px #0006}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#16151a;--bg-elevated:#211f27;--bg-sunken:#0f0e12;--border:#35323d;--text:#ece9f1;--text-muted:#9a95a6;--accent:#8b74e0;--accent-contrast:#16151a;--harmonious:#60a5fa;--hard:#f87171;--minor:#6b7280;--fire:#f0896a;--earth:#86c474;--air:#e6c868;--water:#6fb0e0;--warn-bg:#3a331a;--warn-border:#6b5416;--warn-text:#e8c468;--shadow:0 2px 14px #0006}}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;padding:0}body{font-family:var(--font);font-size:14px;line-height:1.45;overflow:hidden}button,input,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:6px 10px}button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}button.ghost{background:0 0;border-color:#0000}button.icon{justify-content:center;align-items:center;width:34px;height:34px;padding:0;font-size:16px;display:inline-flex}input[type=text],input[type=number],input[type=date],input[type=time],select{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:7px 9px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}label.field{margin-bottom:12px;display:block}label.field>span.field-label{color:var(--text-muted);margin-bottom:4px;font-size:12px;display:block}.field-error{color:var(--danger);margin-top:4px;font-size:12px}.field-hint{color:var(--text-muted);margin-top:4px;font-size:12px}#app{flex-direction:column;height:100vh;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--bg-elevated);flex:none;align-items:center;gap:10px;padding:8px 14px;display:flex}.topbar .brand{white-space:nowrap;font-size:15px;font-weight:700}.topbar .chart-name-menu{flex:auto;min-width:0;position:relative}.topbar .chart-name-btn{text-overflow:ellipsis;white-space:nowrap;text-align:left;max-width:100%;overflow:hidden}.view-toggle{border:1px solid var(--border);border-radius:var(--radius);flex:none;display:flex;overflow:hidden}.view-toggle button{background:var(--bg-elevated);border:none;border-radius:0}.view-toggle button.active{background:var(--accent);color:var(--accent-contrast)}.menu-only-mobile{display:none}.app-body{flex:auto;min-height:0;display:flex}.panel-left{border-right:1px solid var(--border);background:var(--bg-elevated);flex-direction:column;flex:none;width:240px;min-height:0;display:flex}.panel-left .panel-header{align-items:center;gap:8px;padding:10px 12px;display:flex}.panel-left .search-box{padding:0 12px 8px}.chart-list{flex:auto;padding:4px 6px 12px;overflow-y:auto}.chart-list-item{text-align:left;border-radius:var(--radius);background:0 0;border:1px solid #0000;width:100%;margin-bottom:2px;padding:8px 10px;display:block}.chart-list-item:hover{background:var(--bg-sunken)}.chart-list-item.active{background:var(--bg-sunken);border-color:var(--accent)}.chart-list-item .nm{font-weight:600;display:block}.chart-list-item .meta{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.panel-center{flex-direction:column;flex:auto;gap:10px;min-width:0;min-height:0;padding:14px;display:flex;overflow-y:auto}.wheel-wrap{flex:auto;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.wheel-wrap svg{aspect-ratio:1;width:min(100%,640px);max-width:100%;height:auto;max-height:100%}.panel-right{border-left:1px solid var(--border);background:var(--bg-elevated);flex-direction:column;flex:none;width:320px;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--border);flex:none;display:flex}.tabs button{background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:1 1 0;padding:10px 6px}.tabs button.active{border-bottom-color:var(--accent);font-weight:600}.tab-content{flex:auto;padding:10px 12px;overflow:auto}table.data-table{border-collapse:collapse;width:100%;font-size:12.5px}table.data-table th,table.data-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:5px 6px}table.data-table th{color:var(--text-muted);background:var(--bg-elevated);font-weight:600;position:sticky;top:0}.aspect-grid-wrap{overflow:auto}table.aspect-grid{border-collapse:collapse;font-size:11px}table.aspect-grid th,table.aspect-grid td{text-align:center;border:1px solid var(--border);width:30px;height:30px;padding:0}table.aspect-grid th{background:var(--bg-sunken);font-weight:600}.aspect-cell{cursor:default;font-size:13px}.aspect-cell.harmonious{color:var(--harmonious)}.aspect-cell.hard{color:var(--hard)}.aspect-cell.minor{color:var(--minor)}.retro{color:var(--hard);vertical-align:super;font-size:10px}.info-table dt{color:var(--text-muted);margin-top:8px;font-size:12px}.info-table dd{margin:2px 0 0;font-weight:500}.stepper{flex-wrap:wrap;flex:none;justify-content:center;align-items:center;gap:6px;padding:6px 0;display:flex}.stepper .date-field{text-align:center;font-variant-numeric:tabular-nums;min-width:170px}.stepper-mobile-menu{display:none}.empty-state{text-align:center;color:var(--text-muted);max-width:320px;margin:auto}.empty-state h2{color:var(--text);margin-bottom:6px;font-size:17px}.loading-overlay{color:var(--text-muted);background:color-mix(in srgb, var(--bg) 70%, transparent);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.banner{background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn-text);border-radius:var(--radius);flex:none;padding:8px 12px;font-size:12.5px}.overlay-backdrop{z-index:50;background:#00000073;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-elevated);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;width:100%;max-width:440px;max-height:calc(100vh - 40px);display:flex}.modal-header{border-bottom:1px solid var(--border);flex:none;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.modal-header h2{margin:0;font-size:16px}.modal-body{padding:16px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border);flex:none;justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.side-sheet{background:var(--bg-elevated);width:360px;max-width:100%;box-shadow:var(--shadow);z-index:56;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}details.advanced{margin:6px 0 14px}details.advanced summary{cursor:pointer;color:var(--accent);margin-bottom:8px;font-size:13px}.resolved-place{color:var(--text-muted);background:var(--bg-sunken);border-radius:var(--radius);margin-top:6px;padding:7px 9px;font-size:12.5px}.typeahead{position:relative}.typeahead-list{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:10;max-height:220px;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto}.typeahead-list button{text-align:left;background:0 0;border:none;border-radius:0;width:100%;padding:7px 10px;font-size:13px;display:block}.typeahead-list button:hover,.typeahead-list button.highlighted{background:var(--bg-sunken)}.orb-table td,.orb-table th{padding:4px 6px;font-size:12.5px}.orb-table input[type=number]{width:64px;padding:4px 6px}.dropdown-menu{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;min-width:180px;position:absolute;top:calc(100% + 4px);left:0}.dropdown-menu button{text-align:left;background:0 0;border:none;border-radius:0;width:100%;padding:8px 12px;display:block}.dropdown-menu button:hover{background:var(--bg-sunken)}.dropdown-menu button.danger{color:var(--danger)}.theme-toggle-row{gap:6px;display:flex}.theme-toggle-row button{flex:1}.theme-toggle-row button.active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.planet-tooltip{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:none;z-index:100;max-width:220px;padding:8px 10px;font-size:12px;position:fixed}.planet-tooltip .t-title{margin-bottom:3px;font-weight:700}@media (width<=1023px){.panel-left{display:none}.panel-left.open{z-index:60;width:280px;box-shadow:var(--shadow);display:flex;position:fixed;top:0;bottom:0;left:0}.menu-only-mobile{display:inline-flex}}@media (width<=767px){.app-body{flex-direction:column;overflow-y:auto}.panel-center{padding:10px;overflow:visible}.wheel-wrap{aspect-ratio:1;flex:none;width:100%}.panel-right{border-left:none;border-top:1px solid var(--border);flex:none;width:100%}.tab-content{max-height:320px}.stepper{background:var(--bg);padding:8px 4px;position:sticky;bottom:0}.stepper .step-unit-wide{display:none}.stepper-mobile-menu{display:inline-flex;position:relative}.topbar .brand{display:none}.modal{border-radius:0;max-width:100%;height:100%;max-height:100%}.side-sheet{width:100%}}.scrim-backdrop{z-index:55;background:#00000059;position:fixed;inset:0}.visually-hidden{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}
