.appHeader{position:sticky;top:0;z-index:20;background:#ffffffeb;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(16,24,39,.08)}.appHeaderInner{width:min(1280px,calc(100% - 56px));min-height:74px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:18px}.brand{display:inline-flex;align-items:center;gap:10px;color:#111827;text-decoration:none;-webkit-user-select:none;user-select:none}.brand:hover{color:#111827}.brandMark{width:22px;height:22px;border-radius:6px;background:#2563eb;box-shadow:inset 0 -6px #0000001f}.brandText{font-size:14px;font-weight:800;letter-spacing:.12em}.navLinks{display:flex;align-items:center;gap:16px}.navLink{font-size:14px;font-weight:650;color:#334155;text-decoration:none;white-space:nowrap}.navLink:hover{color:#1d4ed8}.languageSwitch{display:inline-flex;gap:6px;padding:4px;border:1px solid rgba(16,24,39,.1);border-radius:999px;background:#eef2f7}.langBtn{appearance:none;min-width:44px;border:0;border-radius:999px;background:transparent;color:#475569;cursor:pointer;font-size:13px;font-weight:700;padding:7px 10px}.langBtn:hover{background:#2563eb14}.langBtn.active{background:#111827;color:#fff}@media(max-width:680px){.appHeaderInner{width:min(100% - 28px,1280px);min-height:auto;padding:14px 0;align-items:flex-start;flex-direction:column}.navLinks{width:100%;justify-content:space-between}}.homePage{min-height:100vh;background:#f5f7fb;color:#101827}.pageInner{width:min(1280px,calc(100% - 56px));margin:0 auto;padding:64px 0 104px}.hero{display:grid;gap:22px;padding:56px 0 48px}.heroKicker,.sectionEyebrow{margin:0;color:#2563eb;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.heroTitle{max-width:1040px;margin:0;color:#0f172a;font-size:clamp(44px,6.6vw,82px);font-weight:850;line-height:1.04}.heroCopy{max-width:820px;margin:0;color:#475569;font-size:17px;line-height:1.7}.heroMetrics{width:min(100%,1040px);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}.heroMetrics div{display:grid;gap:8px;min-height:112px;padding:20px;border:1px solid rgba(15,23,42,.08);border-radius:8px;background:#ffffffc7;box-shadow:0 14px 34px #0f172a0f}.heroMetrics strong{color:#0f172a;font-size:16px;line-height:1.35}.heroMetrics span{color:#64748b;font-size:13px;line-height:1.6}.offers{margin-top:44px}.sectionHeader{display:grid;gap:10px;margin-bottom:24px}.sectionTitle{margin:0;color:#111827;font-size:30px;line-height:1.25}.cardsRow{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:24px}.toolCard{min-height:420px;display:grid;grid-template-rows:210px 1fr;overflow:hidden;border:1px solid rgba(16,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 38px #10182714}.toolCard:hover{border-color:#2563eb38;box-shadow:0 18px 42px #1018271a}.cardImg{background-color:#eef4ff;background-position:center;background-repeat:no-repeat;background-size:contain;border-bottom:1px solid rgba(16,24,39,.08)}.cardVisual{position:relative;display:grid;grid-template-columns:repeat(3,76px);gap:12px;align-content:center;justify-content:center;overflow:hidden;padding:20px;background:#eef4ff}.cardVisual span,.cardVisual strong{min-height:66px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(37,99,235,.16);border-radius:8px;background:#fff;color:#2563eb;font-size:13px;font-weight:850;box-shadow:0 12px 28px #0f172a14}.cardVisual strong{position:absolute;right:22px;bottom:18px;width:54px;min-height:38px;background:#2563eb;color:#fff}.cardVisual.games{grid-template-columns:repeat(3,66px);grid-template-rows:repeat(2,66px);align-content:center;background:#eef4ff}.cardVisual.games span{min-height:66px;border-color:#0f172a1f;color:#111827;font-size:20px}.cardVisual.games span:nth-child(1),.cardVisual.games span:nth-child(5){background:#111827;color:#fff}.cardVisual.games span:nth-child(4){color:#b42318}.cardVisual.carpool{grid-template-columns:repeat(3,72px);grid-template-rows:repeat(2,64px);background:#f0fdf4}.cardVisual.carpool span{border-color:#16a34a2e;color:#166534}.cardVisual.carpool span:nth-child(2),.cardVisual.carpool span:nth-child(6){background:#166534;color:#fff}.cardBody{display:flex;flex-direction:column;justify-content:space-between;gap:26px;padding:26px}.cardTitle{margin:0 0 12px;color:#0f172a;font-size:23px;line-height:1.3}.cardMeta{margin:0;color:#64748b;font-size:15px;line-height:1.7}.cardActions{display:flex}.cardBtn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 20px;border:1px solid rgba(37,99,235,.32);border-radius:8px;background:#2563eb;color:#fff;font-size:14px;font-weight:800;text-decoration:none}.cardBtn:hover{background:#1d4ed8;color:#fff}@media(max-width:680px){.pageInner{width:min(100% - 28px,1280px);padding-top:32px}.hero{padding-top:24px}.heroMetrics,.cardsRow{grid-template-columns:1fr}}.coursePage{min-height:100vh;background:#f5f7fb;color:#111827}.courseShell{width:min(1320px,calc(100% - 56px));margin:0 auto;padding:56px 0 96px}.courseHero{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.58fr);gap:42px;align-items:center;margin-bottom:42px}.courseHero h1{max-width:880px;margin:14px 0 18px;color:#0f172a;font-size:clamp(42px,6vw,72px);line-height:1.03}.courseHero p{max-width:760px;margin:0;color:#475569;font-size:18px;line-height:1.75}.courseKicker{color:#2563eb!important;font-size:13px!important;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.courseHeroStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px;border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 36px #11182714}.courseHeroStats div{display:grid;gap:8px;min-width:0;padding:18px 16px;border-radius:8px;background:#f8fbff}.courseHeroStats strong{overflow:hidden;color:#1d4ed8;font-size:30px;text-overflow:ellipsis;white-space:nowrap}.courseHeroStats span{color:#64748b;font-size:12px;font-weight:800}.courseGrid{display:grid;grid-template-columns:minmax(340px,440px) minmax(0,1fr);gap:24px;align-items:start}.courseControlStack{display:grid;gap:24px}.coursePanel{border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 40px #11182712;padding:24px}.coursePanelHeader{display:grid;grid-template-columns:46px 1fr;gap:16px;align-items:start;margin-bottom:22px}.coursePanelHeader>span{min-width:36px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef2ff;color:#1d4ed8;font-size:12px;font-weight:850}.coursePanel h2{margin:0 0 6px;color:#0f172a;font-size:20px;line-height:1.3}.coursePanel p{margin:0;color:#64748b;font-size:14px;line-height:1.65}.courseField{display:grid;gap:9px;margin-top:16px;color:#334155;font-size:13px;font-weight:800}.courseField input,.questionRow textarea{width:100%;box-sizing:border-box;border:1px solid rgba(17,24,39,.14);border-radius:8px;background:#fff;color:#111827;font:inherit}.courseField input:focus,.questionRow textarea:focus{border-color:#2563eb7a;box-shadow:0 0 0 3px #2563eb1f;outline:none}.courseField input{min-height:46px;padding:0 13px}.courseDropGrid{display:grid;gap:14px}.courseDrop{display:grid;gap:10px;padding:20px;border:1px dashed rgba(37,99,235,.42);border-radius:8px;background:#f8fbff;cursor:pointer}.courseDrop:hover{border-color:#2563ebad;background:#eff6ff}.courseDrop input{width:100%;color:#475569}.courseDrop strong{color:#1d4ed8;font-size:16px}.courseDrop small,.materialItem small{color:#64748b;font-size:12px}.courseActions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.courseActions button,.questionRow button{min-height:44px;border:1px solid rgba(37,99,235,.32);border-radius:8px;background:#2563eb;color:#fff;cursor:pointer;font-size:13px;font-weight:850}.courseActions button{padding:0 18px}.courseActions button:nth-child(2){background:#fff;color:#334155}.courseActions button:hover,.questionRow button:hover{background:#1d4ed8}.courseActions button:nth-child(2):hover{border-color:#2563eb47;background:#f8fbff}.courseActions button:disabled,.questionRow button:disabled{cursor:not-allowed;opacity:.55}.courseError{margin-top:10px!important;color:#b91c1c!important;font-weight:750}.materialPanel{min-width:0}.materialList{max-height:568px;display:grid;gap:10px;overflow:auto;padding-right:4px}.materialItem{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:start;padding:14px 16px;border:1px solid rgba(17,24,39,.08);border-radius:8px;background:#fbfdff}.materialItem:hover{border-color:#2563eb2e;background:#f8fbff}.materialItem div{min-width:0}.materialItem strong,.materialItem span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.materialItem strong{color:#111827;font-size:14px}.materialItem span{margin-top:3px;color:#64748b;font-size:12px}.courseEmpty{min-height:360px;display:grid;align-content:center;justify-items:center;gap:8px;padding:28px;text-align:center}.courseEmpty strong{color:#111827;font-size:18px}.outlinePanel,.askPanel{margin-top:24px}.analysisOutput{min-height:340px;overflow:auto;margin:0;padding:22px;border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fbfdff;color:#1f2937;font-family:Inter,system-ui,sans-serif;font-size:15px;line-height:1.75;white-space:pre-wrap}.emptyOutput{color:#64748b}.chatLog{display:grid;gap:12px;margin-bottom:18px}.chatMessage{display:grid;gap:8px;max-width:920px;padding:16px 18px;border-radius:8px;background:#f8fafc}.chatMessage.user{margin-left:auto;background:#dbeafe}.chatMessage strong{color:#0f172a;font-size:12px}.chatMessage p{color:#1f2937;white-space:pre-wrap}.questionRow{display:grid;grid-template-columns:minmax(0,1fr) 132px;gap:12px;align-items:stretch}.questionRow textarea{min-height:92px;resize:vertical;padding:13px 14px;line-height:1.5}.courseMuted{color:#64748b;font-size:13px}@media(max-width:980px){.courseHero,.courseGrid{grid-template-columns:1fr}}@media(max-width:680px){.courseShell{width:min(100% - 28px,1320px);padding-top:32px}.courseHero{gap:18px}.courseHeroStats{grid-template-columns:1fr}.coursePanel{padding:14px}.questionRow{grid-template-columns:1fr}}.gamePage{min-height:100vh;background:#f5f7fb;color:#111827}.gamePageInner{width:min(1280px,calc(100% - 56px));margin:0 auto;padding:56px 0 96px}.gameHero{display:grid;gap:16px;padding:28px 0 34px}.gameKicker{margin:0;color:#2563eb;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.gameHero h1{max-width:900px;margin:0;color:#0f172a;font-size:clamp(38px,5vw,68px);line-height:1.06}.gameHero p:last-child{max-width:780px;margin:0;color:#536174;font-size:16px;line-height:1.7}.gameWorkspace{display:grid;gap:18px}.gameTabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.gameTab{min-height:82px;display:grid;gap:6px;align-content:center;padding:16px;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff;color:#1f2937;cursor:pointer;text-align:left;box-shadow:0 12px 28px #0f172a0f}.gameTab:hover,.gameTab.active{border-color:#2563eb5c}.gameTab.active{background:#112033;color:#fff}.gameTab span{font-size:18px;font-weight:850;line-height:1.25}.gameTab small{color:#64748b;font-size:13px;font-weight:700;line-height:1.4}.gameTab.active small{color:#cbd5e1}.gamePanel{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(360px,1.28fr);gap:24px;align-items:start;padding:24px;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff;box-shadow:0 16px 38px #0f172a14}.gameInfo{display:grid;gap:18px}.gameInfo h2{margin:0;color:#0f172a;font-size:28px;line-height:1.2}.gameInfo p{margin:0;color:#64748b;font-size:15px;line-height:1.7}.gameStatus{display:grid;gap:8px;padding:16px;border:1px solid rgba(15,23,42,.08);border-radius:8px;background:#f8fafc}.gameStatus span{color:#64748b;font-size:13px;font-weight:750}.gameStatus strong{min-height:28px;color:#111827;font-size:20px;line-height:1.35}.gameActions{display:flex;flex-wrap:wrap;gap:10px}.gameAction{min-height:44px;padding:0 18px;border:1px solid rgba(37,99,235,.32);border-radius:8px;background:#2563eb;color:#fff;cursor:pointer;font-size:14px;font-weight:800}.gameAction:hover{background:#1d4ed8}.gameAction.secondary{background:#fff;color:#1d4ed8}.gameAction.secondary:hover{background:#eff6ff}.gomokuBoard{width:min(100%,660px);aspect-ratio:1;display:grid;grid-template-columns:repeat(15,minmax(0,1fr));justify-self:center;overflow:hidden;border:2px solid #7c4f21;border-radius:8px;background:#d7a95d}.gomokuCell{position:relative;display:grid;place-items:center;min-width:0;border:0;border-right:1px solid rgba(91,59,24,.48);border-bottom:1px solid rgba(91,59,24,.48);background:transparent;cursor:pointer}.gomokuCell:hover{background:#ffffff2e}.stone{width:72%;aspect-ratio:1;border-radius:50%;box-shadow:inset 0 -5px 10px #0000003d,0 3px 8px #0f172a38}.stone.black{background:#151515}.stone.white{background:#f8fafc}.xiangqiBoard{position:relative;width:min(100%,620px);aspect-ratio:9 / 10;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));justify-self:center;overflow:hidden;border:2px solid #7f5530;border-radius:8px;background:#e8c07c}.xiangqiCell{position:relative;display:grid;place-items:center;min-width:0;border:0;border-right:1px solid rgba(97,66,36,.55);border-bottom:1px solid rgba(97,66,36,.55);background:transparent;cursor:default}.xiangqiCell:has(.xiangqiPiece){cursor:pointer}.xiangqiCell.riverTop{border-bottom-color:transparent}.xiangqiCell.riverBottom{border-top:1px solid rgba(97,66,36,.55)}.xiangqiPiece{width:76%;aspect-ratio:1;display:grid;place-items:center;border:2px solid currentColor;border-radius:50%;background:#fff7e6;font-size:clamp(14px,3vw,24px);font-weight:850;line-height:1;box-shadow:0 6px 14px #0f172a29}.xiangqiPiece.red{color:#b42318}.xiangqiPiece.black{color:#111827}.xiangqiPiece.selected{outline:3px solid #2563eb;outline-offset:2px}.riverLabel{position:absolute;top:50%;z-index:1;color:#402a158f;font-size:clamp(16px,2.8vw,30px);font-weight:850;letter-spacing:.12em;pointer-events:none;transform:translateY(-50%)}.riverLabel.left{left:19%}.riverLabel.right{right:19%}.sudokuBoard{width:min(100%,600px);aspect-ratio:1;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));justify-self:center;overflow:hidden;border:3px solid #111827;border-radius:8px;background:#111827}.sudokuBoard input{width:100%;height:100%;min-width:0;border:0;border-right:1px solid #cbd5e1;border-bottom:1px solid #cbd5e1;background:#fff;color:#1f2937;text-align:center;font-size:clamp(18px,4vw,34px);font-weight:800}.sudokuBoard input:nth-child(3n){border-right:3px solid #111827}.sudokuBoard input:nth-child(n+19):nth-child(-n+27),.sudokuBoard input:nth-child(n+46):nth-child(-n+54){border-bottom:3px solid #111827}.sudokuBoard input.fixed{background:#eef2f7;color:#0f172a}.sudokuBoard input.conflict{background:#fee2e2;color:#b42318}@media(max-width:860px){.gamePanel{grid-template-columns:1fr}}@media(max-width:680px){.gamePageInner{width:min(100% - 28px,1280px);padding:32px 0 72px}.gameTabs{grid-template-columns:1fr}.gamePanel{padding:16px}}.carpoolPage{min-height:100vh;background:#f5f7fb;color:#111827}.carpoolShell{width:min(1360px,calc(100% - 56px));margin:0 auto;padding:54px 0 96px}.adminGateShell{width:min(720px,calc(100% - 56px));min-height:calc(100vh - 74px);display:grid;align-items:center;margin:0 auto;padding:54px 0 96px}.adminGatePanel{display:grid;gap:18px;padding:30px;border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 38px #11182714}.adminGatePanel h1{margin:0;color:#0f172a;font-size:clamp(34px,5vw,54px);line-height:1.05}.adminGatePanel p{margin:0;color:#475569;line-height:1.65}.adminGateForm{display:grid;gap:14px}.adminGateWarning{padding:13px 14px;border:1px solid rgba(249,115,22,.22);border-radius:8px;background:#fff7ed;color:#9a3412;font-size:13px;line-height:1.55}.adminGateWarning.danger{border-color:#b91c1c3d;background:#fef2f2;color:#991b1b}.adminToolbar{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-bottom:20px;color:#64748b;font-size:13px;font-weight:800}.adminToolbar button{min-height:38px;border:1px solid rgba(17,24,39,.14);border-radius:8px;background:#fff;color:#334155;cursor:pointer;font:inherit;padding:0 12px}.adminToolbar button:hover{border-color:#2563eb47;background:#f8fbff}.carpoolHero{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,.46fr);gap:34px;align-items:end;margin-bottom:24px}.carpoolKicker{margin:0;color:#2563eb;font-size:13px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.carpoolHero h1{max-width:900px;margin:12px 0 16px;color:#0f172a;font-size:clamp(38px,5.4vw,68px);line-height:1.04}.carpoolHero p{max-width:780px;margin:0;color:#475569;font-size:17px;line-height:1.72}.carpoolStats,.scoreCard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:16px;border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 36px #11182712}.carpoolStats div,.scoreCard div{min-width:0;display:grid;gap:7px;padding:15px;border-radius:8px;background:#f8fbff}.carpoolStats strong,.scoreCard strong{overflow:hidden;color:#1d4ed8;font-size:26px;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.carpoolStats span,.scoreCard span{color:#64748b;font-size:12px;font-weight:800}.carpoolNoticeGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:0 0 24px}.topToolGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;align-items:start;margin-bottom:24px}.carpoolNotice{display:grid;gap:6px;padding:15px 16px;border:1px solid rgba(37,99,235,.18);border-radius:8px;background:#eff6ff}.carpoolNotice.ok{border-color:#16a34a38;background:#f0fdf4}.carpoolNotice.danger{border-color:#b91c1c33;background:#fef2f2}.carpoolNotice strong{color:#0f172a;font-size:14px}.carpoolNotice span{color:#475569;font-size:13px;line-height:1.5}.carpoolWorkspace{display:grid;grid-template-columns:minmax(340px,470px) minmax(0,1fr);gap:24px;align-items:start}.carpoolControls,.carpoolOutput,.assignmentResults{display:grid;gap:20px}.carpoolPanel,.assignmentCard,.emptyResults,.scoreCard{border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#fff;box-shadow:0 16px 38px #11182712}.carpoolPanel{padding:22px}.panelHeading{display:grid;grid-template-columns:42px 1fr;gap:14px;align-items:start;margin-bottom:20px}.panelHeading.compact{grid-template-columns:64px 1fr}.panelHeading>span{min-height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef2ff;color:#1d4ed8;font-size:12px;font-weight:850}.panelHeading h2,.conflictPanel h2{margin:0 0 6px;color:#0f172a;font-size:20px;line-height:1.28}.panelHeading p{margin:0;color:#64748b;font-size:13px;line-height:1.6}.formGrid{display:grid;gap:14px}.formGrid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.carpoolField,.miniField{display:grid;gap:8px;color:#334155;font-size:13px;font-weight:800}.carpoolField input,.carpoolField select,.miniField input,.miniField select{width:100%;min-height:42px;border:1px solid rgba(17,24,39,.14);border-radius:8px;background:#fff;color:#111827;font:inherit;padding:0 12px}.miniField input,.miniField select{width:74px}.miniField.nameField input,.miniField.notesField input{width:100%}.carpoolField input:focus,.carpoolField select:focus,.miniField input:focus,.miniField select:focus{border-color:#2563eb80;box-shadow:0 0 0 3px #2563eb1f;outline:none}.toggleRow{display:flex;flex-wrap:wrap;gap:12px 16px;margin:16px 0}.toggleRow label,.miniCheck{display:inline-flex;align-items:center;gap:8px;color:#334155;font-size:13px;font-weight:750}.primaryBtn,.actionButtons button,.fileButton,.rosterItem button,.relationshipItem button{min-height:42px;border:1px solid rgba(37,99,235,.32);border-radius:8px;background:#2563eb;color:#fff;cursor:pointer;font-size:13px;font-weight:850;padding:0 16px}.fileButton{display:inline-flex;align-items:center;justify-content:center;background:#fff;color:#334155}.fileButton input{display:none}.primaryBtn:hover,.actionButtons button:hover,.rosterItem button:hover,.relationshipItem button:hover{background:#1d4ed8}.actionButtons button:not(.primaryBtn),.fileButton,.rosterItem button,.relationshipItem button{background:#fff;color:#334155}.actionButtons button:not(.primaryBtn):hover,.rosterItem button:hover,.relationshipItem button:hover{border-color:#2563eb47;background:#f8fbff}.fileButton:hover{border-color:#2563eb47;background:#f8fbff}.actionButtons button:disabled{cursor:not-allowed;opacity:.55}.rosterList{display:grid;gap:10px;max-height:520px;overflow:auto;padding-right:3px}.rosterItem,.relationshipItem{display:grid;gap:12px;align-items:center;padding:14px;border:1px solid rgba(17,24,39,.08);border-radius:8px;background:#fbfdff}.rosterItem.driver{grid-template-columns:minmax(140px,1.1fr) 104px 80px repeat(3,auto) minmax(150px,1fr) auto}.rosterItem.passenger{grid-template-columns:minmax(140px,1.1fr) 104px repeat(3,auto) minmax(150px,1fr) auto}.relationshipItem{grid-template-columns:minmax(0,1fr) auto}.relationshipItem strong,.relationshipItem span,.relationshipItem small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.relationshipItem strong{color:#111827;font-size:14px}.relationshipItem span,.relationshipItem small{margin-top:4px;color:#64748b;font-size:12px}.relationshipList{display:grid;gap:10px}.emptyRelation{display:block;padding:14px;border-radius:8px;background:#f8fafc;color:#64748b;font-size:13px}.formMessage{margin:12px 0 0;color:#b91c1c;font-size:13px;font-weight:750}.actionButtons{display:flex;flex-wrap:wrap;gap:10px}.validationBox,.warningList,.conflictPanel{display:grid;gap:8px}.validationBox{margin-top:16px;padding:14px;border-radius:8px;background:#fff7ed;color:#9a3412;font-size:13px;line-height:1.5}.validationBox.neutral{background:#f8fafc;color:#475569}.importPreview,.hintDetails,.manualControls{display:grid;gap:10px;margin-top:14px;padding:14px;border-radius:8px;background:#f8fafc;color:#475569;font-size:13px;line-height:1.55}.importPreview span,.importPreview code,.hintDetails span{display:block}.importPreview code{overflow:auto;padding:8px;border-radius:6px;background:#fff;color:#334155}.activityMeta{align-self:end;min-height:42px;display:flex;align-items:center;color:#64748b;font-size:12px}.actionButtons.compact{margin-top:12px}.scoreCard{grid-template-columns:repeat(4,minmax(0,1fr));padding:14px}.healthGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.healthItem{display:grid;gap:6px;min-height:82px;padding:13px;border:1px solid rgba(17,24,39,.1);border-radius:8px;background:#f8fafc}.healthItem strong{color:#0f172a;font-size:24px}.healthItem span{color:#64748b;font-size:12px;font-weight:800}.healthItem.pass{border-color:#16a34a2e;background:#f0fdf4}.healthItem.warning{border-color:#f9731638;background:#fff7ed}.healthItem.error{border-color:#b91c1c33;background:#fef2f2}.assignmentCard{display:grid;gap:16px;padding:22px}.assignmentTopline{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.assignmentTopline h3{margin:0 0 5px;color:#0f172a;font-size:22px}.assignmentTopline p,.assignmentMeta span,.emptyResults span{margin:0;color:#64748b;font-size:13px;line-height:1.5}.statusPill{flex:0 0 auto;border-radius:999px;padding:7px 10px;background:#fef2f2;color:#b91c1c;font-size:12px;font-weight:850}.statusPill.ok{background:#dcfce7;color:#166534}.assignmentMeta,.passengerChips,.manualGrid{display:flex;flex-wrap:wrap;gap:9px}.lockedTag{border-radius:999px;background:#fef3c7;color:#92400e!important;font-weight:850;padding:5px 9px}.manualGrid{align-items:end}.leaderSelect select{width:min(260px,100%)}.passengerControl,.unassignedControl,.emptyChip{border:1px solid rgba(37,99,235,.14);background:#eff6ff;color:#1d4ed8;font-size:13px;font-weight:750}.passengerControl{display:grid;gap:9px;min-width:min(100%,420px);padding:12px;border-radius:8px}.passengerControl>div,.unassignedControl{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.passengerControl select,.passengerControl button,.unassignedControl select{min-height:34px;border:1px solid rgba(17,24,39,.14);border-radius:8px;background:#fff;color:#334155;font:inherit;padding:0 10px}.passengerControl button{cursor:pointer}.passengerChips .emptyChip{display:inline-flex;min-height:32px;align-items:center;border-radius:999px;padding:0 12px;border-color:#64748b29;background:#f8fafc;color:#64748b}.warningList span,.conflictPanel>span,.unassignedControl{border-left:3px solid #f97316;padding:8px 10px;border-radius:6px;background:#fff7ed;color:#9a3412;font-size:13px;line-height:1.45}.assignmentCard details{color:#475569;font-size:13px}.assignmentCard summary{cursor:pointer;font-weight:850}.assignmentCard ul{margin:10px 0 0;padding-left:20px;line-height:1.55}.emptyResults{min-height:280px;display:grid;align-content:center;justify-items:center;gap:8px;padding:28px;text-align:center}.emptyResults strong{color:#111827;font-size:18px}@media(max-width:980px){.carpoolHero,.carpoolWorkspace,.topToolGrid{grid-template-columns:1fr}}@media(max-width:680px){.carpoolShell{width:min(100% - 28px,1360px);padding-top:32px}.carpoolStats,.scoreCard,.formGrid.two{grid-template-columns:1fr}.rosterItem,.rosterItem.driver,.rosterItem.passenger,.relationshipItem{grid-template-columns:1fr;align-items:stretch}.passengerControl>div,.unassignedControl{flex-direction:column;align-items:stretch}.passengerControl select,.passengerControl button,.unassignedControl select,.miniField input,.miniField select{width:100%}.assignmentTopline{display:grid}}.visualPage{min-height:100vh;background:#f5f7fb;color:#111827}.visualShell{width:min(1320px,calc(100% - 56px));margin:0 auto;padding:56px 0 96px}.visualHero{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.62fr);gap:42px;align-items:center;margin-bottom:42px}.visualHero h1{max-width:900px;margin:14px 0 18px;color:#0f172a;font-size:clamp(42px,6vw,72px);line-height:1.03}.visualHero p{max-width:760px;margin:0;color:#475569;font-size:18px;line-height:1.75}.heroKicker{color:#2563eb;font-size:13px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.stepsPanel{display:grid;gap:12px;padding:18px;border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff;box-shadow:0 16px 36px #0f172a14}.stepsPanel div{display:grid;grid-template-columns:38px 1fr;column-gap:14px;row-gap:4px;padding:14px;border-radius:8px;background:#f8fafc}.stepsPanel span{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:13px;font-weight:850}.stepsPanel strong{color:#111827;font-size:15px}.stepsPanel p{grid-column:2;margin:0;color:#64748b;font-size:13px;line-height:1.65}.workspaceGrid{display:grid;grid-template-columns:minmax(340px,440px) minmax(0,1fr);gap:24px;align-items:start}.controlStack{display:grid;gap:24px}.panel{border:1px solid rgba(15,23,42,.1);border-radius:8px;background:#fff;box-shadow:0 16px 40px #0f172a12;padding:24px}.panelHeader{display:grid;grid-template-columns:46px 1fr;gap:16px;align-items:start;margin-bottom:22px}.panelStep{min-width:36px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eef2ff;color:#1d4ed8;font-size:12px;font-weight:850}.panel h2{margin:0 0 6px;color:#0f172a;font-size:20px;line-height:1.3}.panel p{margin:0;color:#64748b;font-size:14px;line-height:1.65}.fileDrop{display:grid;gap:10px;padding:22px;border:1px dashed rgba(37,99,235,.42);border-radius:8px;background:#f8fbff;cursor:pointer}.fileDrop input{width:100%;color:#475569}.fileDrop span{color:#1d4ed8;font-size:16px;font-weight:850}.fileDrop small{color:#64748b;font-size:12px}.fileStats{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.fileStats strong,.fileStats span{max-width:100%;overflow:hidden;padding:6px 9px;border-radius:999px;background:#eef2f7;color:#334155;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.error{margin-top:10px!important;color:#b91c1c!important;font-weight:700}.chartTypeGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px}.chartTypeGrid button{min-height:44px;border:1px solid rgba(15,23,42,.12);border-radius:8px;background:#fff;color:#334155;cursor:pointer;font-size:13px;font-weight:800}.chartTypeGrid button:hover{border-color:#2563eb57;background:#f8fbff}.chartTypeGrid button.active{border-color:#2563eb;background:#2563eb;color:#fff}.fieldGrid{display:grid;gap:16px}.fieldLabel{display:grid;gap:9px;color:#334155;font-size:13px;font-weight:800}.fieldLabel select{width:100%;min-height:46px;border:1px solid rgba(15,23,42,.14);border-radius:8px;background:#fff;color:#111827;padding:0 10px}.chartPanel{min-width:0}.plotFrame{height:620px;min-width:0;overflow:hidden;border:1px solid rgba(15,23,42,.08);border-radius:8px;background:#fbfdff}.emptyState{height:100%;display:grid;align-content:center;justify-items:center;gap:10px;padding:36px;text-align:center}.emptyState strong{color:#111827;font-size:18px}.emptyState p{max-width:420px}.dataPanel{margin-top:24px}.muted{color:#64748b;font-size:13px}.tableWrap{overflow:auto;border:1px solid rgba(15,23,42,.1);border-radius:8px}.tableWrap table{width:100%;min-width:960px;border-collapse:collapse}.tableWrap th,.tableWrap td{max-width:220px;padding:12px 14px;border-bottom:1px solid rgba(15,23,42,.08);color:#334155;font-size:12px;text-align:left;vertical-align:top;white-space:nowrap}.tableWrap th{position:sticky;top:0;background:#f8fafc;color:#0f172a;font-weight:850}@media(max-width:980px){.visualHero,.workspaceGrid{grid-template-columns:1fr}.stepsPanel{max-width:none}}@media(max-width:680px){.visualShell{width:min(100% - 28px,1320px);padding-top:32px}.visualHero{gap:18px}.panel{padding:18px}.chartTypeGrid{grid-template-columns:1fr}.plotFrame{height:430px}}:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;color:#111827;background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{letter-spacing:0}#root{min-height:100vh}
