:root{--bg:#f4f6fb;--card:#ffffff;--ink:#1c2333;--muted:#6b7280;--line:#e3e7ef;--accent:#4f7cff;--accent-dark:#3a63d8;--danger:#e5484d;--now:#ff6b6b}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}button{cursor:pointer;font:inherit;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;transition:background .15s,border-color .15s,transform .05s}button:hover{background:#f0f3fb}button:active{transform:translateY(1px)}button:disabled{opacity:.6;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-dark)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.ghost-btn{background:transparent;border:none;color:var(--accent);padding:4px 8px}input,select,textarea{font:inherit;padding:9px 11px;border:1px solid var(--line);border-radius:8px;width:100%;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid rgba(79,124,255,.35);border-color:var(--accent)}.landing-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:36px;max-width:460px;width:calc(100% - 40px);margin:8vh auto 0;box-shadow:0 12px 40px rgba(28,35,51,.08)}.landing-card h1{margin:0 0 4px;font-size:28px}.subtitle{color:var(--muted);margin:0 0 24px}.panel{margin:0}.panel h2{font-size:16px;margin:0 0 4px}.panel p{color:var(--muted);font-size:14px;margin:0 0 12px}.inline-form{display:flex;gap:8px}.inline-form input{flex:1 1}.inline-form button{white-space:nowrap}.stacked-form{display:flex;flex-direction:column;gap:8px}.stacked-form .field-label{font-size:13px;font-weight:600;color:var(--ink);margin-top:4px}.stacked-form button{margin-top:6px}.divider{text-align:center;position:relative;margin:24px 0;color:var(--muted)}.divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--line)}.divider span{background:var(--card);padding:0 12px;position:relative}.error{background:#fdecec;color:var(--danger);border:1px solid #f7c6c7;padding:10px 14px;border-radius:8px;margin-bottom:18px;font-size:14px}.shell{display:flex;height:100vh;overflow:hidden}.main-area{flex:1 1;min-width:0;min-height:0}.main-area,.sidebar{display:flex;flex-direction:column}.sidebar{width:248px;flex-shrink:0;background:var(--card);border-right:1px solid var(--line);padding:18px 16px;gap:22px;overflow-y:auto}.brand{font-size:16px;font-weight:700;text-decoration:none;color:var(--ink)}.sidebar-hint{margin:0;font-size:12.5px;line-height:1.4;color:var(--muted);background:#f0f3fb;border-radius:8px;padding:9px 11px}.people-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.people-head h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.people-empty{margin:0;font-size:13px;color:var(--muted);font-style:italic}.people-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.person-item{display:flex;align-items:center;border-radius:8px;border:1px solid transparent;transition:opacity .12s}.person-item:hover{background:#f0f3fb}.person-item.selected{background:rgba(79,124,255,.14);border-color:rgba(79,124,255,.45)}.person-item.dim{opacity:.35}.person-select{flex:1 1;min-width:0;display:flex;align-items:center;gap:9px;text-align:left;border:none;padding:7px 8px;font-size:14px;border-radius:8px}.person-edit,.person-select,.person-select:hover{background:transparent}.person-edit{border:none;color:var(--muted);padding:6px 9px}.person-edit:hover{color:var(--accent);background:transparent}.person-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.person-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend{margin-top:auto;font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px}.legend>div{display:flex;align-items:center;gap:8px}.legend-swatch{width:16px;height:12px;border-radius:3px;flex-shrink:0}.legend-swatch.block{background:#4f7cff22;border:1px solid #4f7cff}.legend-swatch.point{height:0;border:none;position:relative}.legend-swatch.point:before{content:"";position:absolute;left:0;top:4px;width:16px;height:2px;background:var(--accent)}.legend-swatch.point:after{content:"";position:absolute;left:-1px;top:1px;width:8px;height:8px;border-radius:50%;background:var(--accent)}.topbar{gap:20px;padding:14px 22px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}.topbar,.topbar-left{display:flex;align-items:center}.topbar-left{gap:12px;flex:1 1;min-width:220px}.home-link{font-size:26px;text-decoration:none}.topbar h1{font-size:18px;margin:0}.code-pill{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:4px}.code-pill strong{color:var(--ink);letter-spacing:1px}.week-label{font-size:14px;font-weight:600;color:var(--ink);background:#f0f3fb;padding:7px 14px;border-radius:20px}.calendar{--hour-h:48px;--gutter:56px;display:grid;grid-template-columns:var(--gutter) repeat(7,1fr);grid-auto-rows:min-content;align-content:start;flex:1 1;min-height:0;overflow:auto}.col-head{position:-webkit-sticky;position:sticky;top:0;z-index:6;background:var(--card);border-bottom:1px solid var(--line);border-left:1px solid var(--line);text-align:center;padding:8px 4px;font-size:13px}.col-head .dow{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.5px}.col-head .dom{font-size:18px;font-weight:600}.col-head.today .dom{background:var(--accent);color:#fff;border-radius:50%;width:30px;height:30px;line-height:30px;display:inline-block}.corner{position:-webkit-sticky;position:sticky;top:0;z-index:6;background:var(--card);border-bottom:1px solid var(--line)}.time-gutter{grid-column:1}.time-label{height:var(--hour-h);font-size:11px;color:var(--muted);text-align:right;padding-right:6px;transform:translateY(-6px)}.time-label:first-child{transform:none}.day-col{position:relative;border-left:1px solid var(--line)}.hour-cell{position:relative;height:var(--hour-h);border-bottom:1px solid var(--line);cursor:default}.has-selection .hour-cell{cursor:pointer}.has-selection .hour-cell:hover{background:rgba(0,0,0,.05)}.driver-mode .hour-cell:hover,.kid-mode .hour-cell:hover{background:transparent}.kid-mode .hour-cell:hover:after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--kid-color,rgba(0,0,0,.208));top:var(--hover-y,50%);pointer-events:none}.avail-ghost{opacity:.5;pointer-events:none;border-style:dashed!important}.avail{position:absolute;left:3px;right:3px;border-radius:6px;padding:3px 7px;font-size:12px;overflow:hidden;cursor:pointer;border:1px solid;border-left:3px solid}.avail:hover{filter:brightness(.97)}.avail .ev-title{font-weight:700;line-height:1.2}.avail .ev-time{font-size:11px;opacity:.85}.avail.dim .ev-time{display:none}.need{position:absolute;left:0;right:0;height:0;z-index:4;cursor:pointer;display:flex;align-items:center}.need-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-left:-1px;box-shadow:0 0 0 2px #fff}.need-label{background:#fff;border:1px solid;border-radius:12px;padding:1px 8px;font-size:11px;margin-left:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 1px 3px rgba(0,0,0,.18);max-width:calc(100% - 18px)}.need-label strong{font-weight:700}.avail.dim,.need.dim,.travel-block.dim,.travel-origin.dim{opacity:.2;filter:grayscale(.4);pointer-events:none}.modal-sub{font-size:13px;font-weight:400;color:var(--muted)}.link-btn{border:none;background:none;padding:0;font:inherit;color:var(--accent);text-decoration:underline;cursor:pointer}.link-btn:hover{background:none;color:var(--accent-dark)}.travel-block{position:absolute;left:0;right:0;border-top:2px dashed;z-index:3;pointer-events:none;display:flex;align-items:center;padding-left:6px;overflow:hidden}.travel-label{font-size:10px;font-weight:600;opacity:.75;white-space:nowrap}.travel-origin{position:absolute;left:0;right:0;height:0;z-index:4;display:flex;align-items:center;pointer-events:none}.color-field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:500;color:var(--muted)}.color-swatches{display:flex;flex-wrap:wrap;gap:6px}.color-swatch{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;flex:0 0 auto;position:relative;transition:transform .1s}.color-swatch:hover{transform:scale(1.15)}.color-swatch.selected{border-color:#000;box-shadow:inset 0 0 0 1px #fff}.custom-plus,.custom-swatch{display:grid;place-items:center;overflow:hidden}.custom-plus{font-size:19px;line-height:1;font-weight:600}.custom-color-input{grid-area:1/1;width:100%;height:100%;opacity:0;padding:0;border:0;cursor:pointer}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:50%;border:none;background:transparent;color:var(--muted)}.icon-btn:hover{background:#f0f3fb;color:var(--ink)}.settings-btn{margin-left:4px}.topbar-right{gap:8px}.invite-row,.topbar-right{display:flex;align-items:center}.invite-row{gap:10px}.invite-code{font-size:14px;color:var(--muted)}.invite-code strong{color:var(--ink);letter-spacing:1px}.drives-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;border-radius:10px;font-size:11px;font-weight:700;min-width:18px;height:18px;padding:0 4px;margin-left:4px}.modal-wide{max-width:min(960px,94vw)}.drives-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.drive-row{display:flex;gap:14px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fafbff}.drive-time{min-width:92px;flex-shrink:0;display:flex;flex-direction:column;gap:1px}.drive-date{font-size:11px;color:var(--muted)}.drive-time strong{font-size:15px}.drive-detail{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:7px}.drive-who{gap:8px;font-size:13px;font-weight:700;flex-wrap:wrap}.drive-participant,.drive-who{display:flex;align-items:center}.drive-participant{gap:5px}.drive-meta{font-size:11px;font-weight:500;color:var(--muted)}.plan-section-title{font-size:14px;font-weight:700;margin:18px 0 10px;color:var(--text);border-top:1px solid var(--line);padding-top:14px}.plan-section-title.first{border-top:none;padding-top:0;margin-top:8px}.unassigned-badge{font-size:12px;color:var(--danger);font-weight:600}.pool-badge{font-size:11px;font-weight:700;color:var(--accent);background:rgba(79,124,255,.14);border-radius:6px;padding:1px 6px}.drive-stops{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.drive-stop{display:grid;grid-template-columns:62px minmax(0,auto) 1fr auto;align-items:center;grid-gap:10px;gap:10px;font-size:13px}.stop-verb{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;text-align:center;border-radius:5px;padding:2px 0}.stop-verb.dropoff{color:#b54708;background:#fef0e6}.stop-verb.pickup{color:#175cd3;background:#eaf1fe}.stop-kids{gap:6px;font-weight:600;white-space:nowrap}.stop-kid,.stop-kids{display:inline-flex;align-items:center}.stop-kid{gap:4px}.stop-addr{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stop-time{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}.schedule-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:16px;gap:16px;margin-top:10px}.schedule-card-wrap{position:relative;cursor:pointer;border-radius:12px}.schedule-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:0 2px 10px rgba(28,35,51,.05)}.schedule-card-overlay{position:absolute;inset:0;border-radius:12px;pointer-events:none;display:flex;align-items:center;justify-content:center;background:rgba(20,26,40,0);transition:background .15s}.schedule-card-overlay span{color:#fff;font-weight:700;font-size:13px;letter-spacing:1px;text-transform:uppercase;opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s}.schedule-card-wrap:hover .schedule-card-overlay{background:rgba(20,26,40,.55)}.schedule-card-wrap:hover .schedule-card-overlay span{opacity:1;transform:none}.schedule-card-head{display:flex;align-items:center;gap:8px}.schedule-card-head .person-dot{width:11px;height:11px}.schedule-card-name{font-weight:700;font-size:16px;line-height:1.1}.schedule-card-role{font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:.5px;margin-left:auto;align-self:center}.schedule-card-week{font-size:12px;color:var(--muted);margin:2px 0 10px}.schedule-entries{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}.schedule-entry-date{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--accent);margin-top:6px}.schedule-entry-label{font-size:13px;font-weight:600}.schedule-entry-detail{font-size:12px;color:var(--muted)}.schedule-empty{font-size:13px;color:var(--muted);font-style:italic;margin:4px 0 0}.tier-editor{display:flex;flex-direction:column;gap:10px;margin:6px 0 4px}.tier-row{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fafbff;transition:border-color .12s,background .12s}.tier-row.drag-over{border-color:var(--accent);background:rgba(79,124,255,.08)}.tier-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;min-height:30px}.tier-name{font-size:13px;font-weight:700;line-height:1}.tier-row .tier-weight{display:inline-flex;align-items:center;gap:6px;margin:0 0 0 auto;width:auto;font-size:12px;font-weight:500;color:var(--muted);line-height:1}.tier-row .tier-weight input{width:56px;padding:4px 6px;margin:0;font-size:13px}.tier-row .tier-remove{font-size:12px;padding:4px 8px;color:var(--danger);line-height:1}.tier-members{display:flex;flex-wrap:wrap;gap:6px}.tier-empty{font-size:12px;color:var(--muted);font-style:italic}.tier-chip{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:3px 7px;font-size:12px;cursor:-webkit-grab;cursor:grab}.tier-chip:active{cursor:-webkit-grabbing;cursor:grabbing}.tier-chip.dragging{opacity:.4}.tier-chip-name{font-weight:600}.tier-move{border:none;background:transparent;padding:0 2px;font-size:10px;color:var(--muted);line-height:1;cursor:pointer}.tier-move:hover:not(:disabled){color:var(--accent);background:transparent}.tier-move:disabled{opacity:.25;cursor:default}.field-hint{display:block;font-size:11px;color:var(--muted);margin-top:3px}.location-input{position:relative}.location-suggestions{position:absolute;top:100%;left:0;right:0;z-index:200;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.12);margin-top:2px;padding:4px 0;list-style:none;max-height:200px;overflow-y:auto}.location-suggestions li{padding:8px 12px;font-size:13px;cursor:pointer;line-height:1.4}.location-suggestions li:hover{background:#f4f6fb}.trip-toggle{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:14px}.trip-toggle button{flex:1 1;padding:7px 0;font-size:13px;font-weight:500;background:none;border:none;cursor:pointer;color:var(--muted);transition:background .15s,color .15s}.trip-toggle button.active{background:var(--accent);color:#fff}.trip-toggle button:not(.active):hover{background:rgba(0,0,0,.04)}.who-chip{display:flex;align-items:center;gap:8px;background:#f4f6fb;border:1px solid var(--line);border-radius:10px;padding:9px 12px;margin-bottom:16px;font-size:14px}.who-chip .who-role{color:var(--muted);font-size:12.5px}.now-line{left:0;right:0;height:2px;z-index:2;pointer-events:none}.now-line,.now-line:before{position:absolute;background:var(--now)}.now-line:before{content:"";left:-4px;top:-3px;width:8px;height:8px;border-radius:50%}.modal-backdrop{position:fixed;inset:0;background:rgba(20,26,40,.55);display:flex;align-items:center;justify-content:center;z-index:50}.modal,.modal-backdrop{padding:24px;overscroll-behavior:contain}.modal{position:relative;background:#fff;border-radius:14px;width:100%;max-width:440px;box-shadow:0 20px 60px rgba(0,0,0,.25);max-height:90vh;overflow-y:auto}.modal-close{position:absolute;top:12px;right:12px;z-index:2}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{width:0;height:0}.modal h2{margin:0 0 16px;font-size:19px}.modal label{display:block;font-size:13px;color:var(--muted);margin-bottom:12px}.modal label input,.modal label select,.modal label textarea{margin-top:4px}.modal textarea.autogrow{resize:none;overflow-y:auto;min-height:52px;max-height:45vh;line-height:1.4}.modal .row{display:flex;gap:12px}.modal .row label{flex:1 1}.modal-actions{display:flex;align-items:center;gap:8px;margin-top:8px}.modal-actions .spacer{flex:1 1}input[type=color]{padding:2px;height:40px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:8px;font-size:14px;z-index:100;box-shadow:0 8px 24px rgba(0,0,0,.25)}