:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Arial,sans-serif;color:#0d1d35;background:#f4f6f9;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{margin:0;min-height:100%}body{background:#f4f6f9}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.app{min-height:100vh;padding-bottom:calc(78px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:calc(14px + env(safe-area-inset-top)) 18px 14px;background:#fffffff5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid #dbe1e9}.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand img{width:42px;height:42px;border-radius:11px;flex:0 0 auto}.brand-text{min-width:0}.brand h1{margin:0;font-size:22px;letter-spacing:-.03em}.brand p{margin:2px 0 0;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw;font-size:13px}.header-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.text-btn{border:0;background:transparent;color:#10284a;font-weight:650;padding:9px 3px}.text-btn.danger,.danger{color:#9f2f2f!important}.main{width:min(1180px,100%);margin:0 auto;padding:22px 18px 34px}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.page-head h2{margin:0;font-size:30px;letter-spacing:-.035em}.page-head p{margin:5px 0 0;color:#667085}.meta{padding:7px 10px;border:1px solid #d5dce6;border-radius:10px;color:#40516b;font-weight:650;background:#fff;white-space:nowrap}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:12px 0}.primary,.secondary,.pager button,.report-toggle{border-radius:12px;min-height:44px;padding:10px 16px;font-weight:700;border:1px solid transparent}.primary{background:#10284a;color:#fff;border-color:#10284a}.secondary,.pager button{background:#fff;color:#10284a;border-color:#cdd5df}button:disabled{opacity:.4}.full-button{width:100%;margin-top:14px}.toggle{display:inline-flex;gap:8px;align-items:center;min-height:44px;padding:8px 10px;color:#40516b}.card,.result-card{background:#fff;border:1px solid #dbe1e9;border-radius:17px;box-shadow:0 5px 20px #0f23410a}.notice{border:1px solid #cad5e4;background:#eef3f8;border-radius:12px;padding:12px 14px;color:#324865}.notice.error{border-color:#e1b5b5;background:#fff2f2;color:#8e2525}.empty{min-height:56vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:30px 18px}.empty img{width:104px;height:104px;border-radius:24px;margin-bottom:18px}.empty h2,.empty h3{margin:0 0 8px}.empty p{max-width:600px;color:#667085;line-height:1.5}.empty-actions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;justify-content:center}.compact-empty{min-height:34vh}.progress-card{max-width:620px;margin:22vh auto 0;padding:22px}.progress-card h3{margin:0 0 15px}.progress-track{height:10px;background:#e5eaf0;overflow:hidden;border-radius:999px}.progress-bar{height:100%;background:#1c4f8f;border-radius:inherit;transition:width .2s}.progress-text{margin-top:10px;color:#667085}.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;color:#667085;font-size:13px}.pager-group{display:flex;gap:7px}.pager button{min-height:38px;padding:7px 10px;font-size:13px;border-radius:9px}.sheet-shell,.result-table-shell{overflow:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #d8dee7;border-radius:13px}table{border-collapse:separate;border-spacing:0;width:100%}.data-table,.variables-table{min-width:760px}th,td{border-right:1px solid #e0e5ec;border-bottom:1px solid #e0e5ec;padding:10px 11px;text-align:left;vertical-align:middle}th:last-child,td:last-child{border-right:0}tr:last-child td,tr:last-child th{border-bottom:0}thead th{position:sticky;top:0;z-index:2;background:#f0f3f7;color:#203753;font-size:13px}.data-table th:first-child,.data-table td:first-child,.variables-table th:first-child,.variables-table td:first-child{position:sticky;left:0;z-index:3;background:#f7f9fb}.data-table thead th:first-child,.variables-table thead th:first-child{z-index:4;background:#e9eef4}.data-table td{white-space:nowrap;max-width:220px;overflow:hidden;text-overflow:ellipsis}.var-name{display:block;font-weight:750}.var-label{display:block;color:#6e7d90;font-size:11px;font-weight:500;max-width:170px;overflow:hidden;text-overflow:ellipsis}.variables-table tbody tr{cursor:pointer}.variables-table tbody tr:active{background:#eef3f8}.search{width:100%;min-height:45px;border:1px solid #cbd3de;border-radius:12px;padding:10px 13px;background:#fff;color:#102038}.subtle{color:#6b7788;line-height:1.45;font-size:13px}.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,1fr);padding:9px 10px calc(9px + env(safe-area-inset-bottom));background:#fffffff5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid #dbe1e9}.nav-btn{border:0;border-radius:12px;background:transparent;color:#687589;font-weight:750;min-height:48px;padding:6px 2px;font-size:13px}.nav-btn.active{color:#10284a;background:#e9eef4}.file-input{display:none}.analysis-menu{display:flex;gap:8px;overflow-x:auto;padding:2px 0 12px;-webkit-overflow-scrolling:touch}.analysis-menu button{flex:0 0 auto;border:1px solid #cfd7e1;background:#fff;color:#344a68;border-radius:999px;padding:9px 13px;font-weight:650}.analysis-menu button.active{background:#10284a;border-color:#10284a;color:#fff}.analysis-card{padding:18px}.analysis-card h3{margin:0 0 6px;font-size:22px}.field{display:flex;flex-direction:column;gap:7px;margin-top:14px}.field label{font-weight:700;color:#263d5b}.field input,.field select,.field textarea{width:100%;border:1px solid #cbd3de;border-radius:11px;padding:10px 12px;background:#fff;color:#102038;min-height:44px}.field textarea{resize:vertical}.check-row{display:flex;align-items:center;gap:9px;margin:17px 0 4px;font-weight:650}.picker-button{width:100%;min-height:52px;border:1px solid #cbd3de;border-radius:12px;background:#fff;color:#102038;padding:8px 10px;text-align:left;display:flex;flex-wrap:wrap;gap:7px;align-items:center}.placeholder{color:#788496}.chip{display:inline-flex;flex-direction:column;background:#eef3f8;border:1px solid #d6e0ec;border-radius:9px;padding:5px 8px;font-weight:650;max-width:100%}.chip small{color:#6d7b8d;font-size:10px;font-weight:500}.result-card{padding:18px;margin-bottom:16px}.result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.result-head h3{margin:0;font-size:20px}.result-head p{margin:4px 0 0;color:#687589}.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.badges span{font-size:12px;border:1px solid #d4dce6;border-radius:999px;padding:4px 8px;color:#40516b}.report-toggle{flex:0 0 auto;min-height:38px;padding:7px 10px;background:#fff;border-color:#cdd5df;color:#40516b;font-size:12px}.report-toggle.active{background:#10284a;border-color:#10284a;color:#fff}.result-section{margin-top:19px}.result-section h4{margin:0 0 8px;font-size:15px}.result-section p{margin:0;line-height:1.5;color:#40516b}.warning-section{background:#fff9e9;border:1px solid #ead9a6;padding:12px;border-radius:10px}.result-table{min-width:560px;font-size:13px}.result-table th{background:#edf1f6}.result-table td,.result-table th{padding:8px 9px}.correlation-table th:first-child,.correlation-table td:first-child,.crosstab th:first-child{position:sticky;left:0;z-index:2;background:#f5f7fa;min-width:180px}.correlation-table td{min-width:105px;text-align:center}.correlation-table td strong{display:block}.correlation-table td small{display:block;margin-top:4px;color:#687589;line-height:1.35}.table-note{font-size:12px;color:#667085;margin-top:7px!important}.crosstab th:nth-child(2){width:44px;text-align:center}.crosstab td{text-align:right;white-space:nowrap}.result-actions{display:flex;justify-content:flex-end;margin-top:8px}.boxplot-shell{overflow-x:auto;border:1px solid #d8dee7;border-radius:12px;background:#fff}.boxplot-shell svg{min-width:620px;width:100%;height:auto;display:block}.plot-line,.axis{stroke:#355675;stroke-width:3}.plot-box{fill:#dce8f5;stroke:#244a73;stroke-width:3}.plot-median{stroke:#0d2b4e;stroke-width:5}.plot-point{fill:#fff;stroke:#244a73;stroke-width:2}.boxplot-shell text{fill:#40516b;font-size:13px}.report-list{display:flex;flex-direction:column;gap:9px;margin-bottom:14px}.report-item{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;background:#fff;border:1px solid #d8dee7;border-radius:12px;padding:10px}.report-item>span{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#edf2f7;font-weight:750}.report-item strong,.report-item small{display:block}.report-item small{color:#6b7788;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backdrop{position:fixed;inset:0;z-index:60;background:#07122180;display:flex;align-items:flex-end;justify-content:center;padding:0}.bottom-sheet{width:min(720px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:22px 22px 0 0;padding:12px 18px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -14px 40px #00000029}.sheet-handle{width:42px;height:5px;border-radius:99px;background:#c7ced8;margin:0 auto 13px}.bottom-sheet h3{margin:0 0 10px;font-size:21px}.sheet-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:9px;margin-top:14px;padding-top:10px;background:#fff}.picker-sheet{display:flex;flex-direction:column;height:min(88vh,760px);overflow:hidden}.picker-list{flex:1;overflow:auto;margin-top:10px;border:1px solid #d8dee7;border-radius:12px}.picker-row{width:100%;border:0;border-bottom:1px solid #e2e7ed;background:#fff;color:#102038;padding:10px;display:grid;grid-template-columns:28px minmax(0,1fr);text-align:left;gap:8px}.picker-row:last-child{border-bottom:0}.picker-row.selected{background:#edf3f9}.picker-row strong,.picker-row small{display:block}.picker-row small{color:#6d7b8d;margin-top:2px}.picker-mark{width:24px;height:24px;border:1px solid #bfc9d5;border-radius:6px;display:grid;place-items:center;color:#fff;font-weight:800}.picker-row.selected .picker-mark{background:#153d6b;border-color:#153d6b}.menu-sheet{display:flex;flex-direction:column;gap:8px}.menu-action{width:100%;min-height:48px;text-align:left;border:1px solid #d4dce6;background:#fff;border-radius:11px;padding:10px 13px;color:#10284a;font-weight:700}.compact .main{font-size:13px}.compact th,.compact td{padding:6px 7px;font-size:11px}.compact .result-table{font-size:11px}.compact .page-head h2{font-size:25px}.compact .brand h1{font-size:19px}.compact .nav-btn{font-size:11px}@media(min-width:800px){.main{padding:28px 28px 48px}.analysis-card{max-width:760px}.bottom-sheet{border-radius:22px;margin-bottom:3vh}.backdrop{align-items:center;padding:20px}.bottom-nav{left:50%;transform:translate(-50%);width:min(760px,96%);border:1px solid #dbe1e9;border-bottom:0;border-radius:18px 18px 0 0}}@media(max-width:520px){.topbar{padding-left:13px;padding-right:13px}.brand img{width:38px;height:38px}.brand h1{font-size:19px}.brand p{max-width:34vw}.header-actions{gap:7px}.header-actions .text-btn{font-size:12px}.main{padding-left:12px;padding-right:12px}.page-head h2{font-size:27px}.page-head p{font-size:13px}.meta{font-size:12px}.result-head{flex-direction:column}.report-toggle{align-self:flex-start}.nav-btn{font-size:11px}.pager{align-items:flex-start;flex-direction:column}.pager span{order:-1}}
.variable-toolbar .search{flex:1 1 320px}.recode-sheet{width:min(760px,100%)}.recode-title-row,.recode-rule-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.recode-title-row{margin:20px 0 8px}.recode-title-row h4{margin:0}.recode-rule{border:1px solid #d8dee7;border-radius:14px;padding:13px;margin-top:12px;background:#fbfcfd}.recode-rule .field{margin-top:10px}.recode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.recode-condition-note{margin:10px 0 0}.warning-recode{margin-top:14px;border-color:#d8c8a4;background:#fffaf0;color:#5f4b22}.recode-missing{margin-top:10px}.recode-sheet .sheet-actions{z-index:2}
.app.compact{font-size:12px}.app.compact p,.app.compact label,.app.compact button,.app.compact input,.app.compact select,.app.compact textarea,.app.compact .meta,.app.compact .notice,.app.compact .toggle,.app.compact .progress-text,.app.compact .pager,.app.compact .subtle,.app.compact .table-note,.app.compact .badges span,.app.compact .report-item,.app.compact .menu-action{font-size:11px}.app.compact .brand h1{font-size:18px}.app.compact .brand p{font-size:10px}.app.compact .page-head h2{font-size:23px}.app.compact .page-head p{font-size:11px}.app.compact .analysis-card h3,.app.compact .bottom-sheet h3{font-size:18px}.app.compact .result-head h3{font-size:17px}.app.compact .result-section h4,.app.compact .recode-title-row h4{font-size:13px}.app.compact .nav-btn{font-size:10px}.app.compact th,.app.compact td,.app.compact .result-table,.app.compact thead th{font-size:10px;padding:6px 7px}.app.compact .var-name{font-size:10px}.app.compact .var-label,.app.compact small,.app.compact .chip small,.app.compact .picker-row small{font-size:9px}.app.compact .chip,.app.compact .picker-row strong{font-size:10px}.app.compact svg text{font-size:10px}.app.compact .primary,.app.compact .secondary,.app.compact .pager button,.app.compact .report-toggle,.app.compact .field input,.app.compact .field select,.app.compact .field textarea,.app.compact .picker-button,.app.compact .search{font-size:11px}.app.compact .text-btn{font-size:11px}.app.compact .progress-card h3,.app.compact .empty h2,.app.compact .empty h3{font-size:18px}
@media(max-width:520px){.recode-grid{grid-template-columns:1fr}.variable-toolbar .search{flex-basis:100%}}
