:root{--nav:#14283b;--nav2:#1d3c55;--blue:#1769e0;--bg:#f5f7fa;--line:#e2e8f0;--muted:#687789;--text:#102033;--soft:#f8fafc}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}.hidden{display:none!important}button,input,select,textarea{font:inherit}
.shell{display:grid;grid-template-columns:215px 1fr;min-height:100vh}aside{background:var(--nav);padding:24px 14px;color:#fff;display:flex;flex-direction:column}.brand{font-family:Georgia,serif;font-size:26px;letter-spacing:1px}.brand span{display:block;font:9px Arial;letter-spacing:5px;margin-top:5px}.white{margin:5px 12px 30px}
nav{display:flex;flex-direction:column;gap:5px}nav button,.logout{border:0;background:transparent;color:#dbe6ef;padding:12px 14px;border-radius:8px;text-align:left;cursor:pointer}nav button.active,nav button:hover{background:#294a66}.logout{margin-top:auto}
header{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px}header input{width:min(560px,60vw);padding:11px 13px;border:1px solid var(--line);border-radius:8px}header span{font-size:13px;color:var(--muted)}
.page{padding:24px}.pageHead{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.pageHead h1{margin:0;font-size:28px}.pageHead p{margin:5px 0;color:var(--muted)}button.primary,.loginCard button{background:var(--blue);color:#fff;border:0;border-radius:8px;padding:11px 15px;font-weight:700;cursor:pointer}.secondary{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-weight:650;cursor:pointer;color:var(--text)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.stats article,.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px}.stats small{display:block;color:var(--muted)}.stats b{display:block;font-size:30px;margin-top:6px}.card h3{margin-top:0}.tableWrap{overflow:auto}
table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:12px 9px;border-bottom:1px solid var(--line);vertical-align:middle}th{color:var(--muted);background:#fafbfc;font-size:11px;text-transform:uppercase;letter-spacing:.04em}.pill{display:inline-block;padding:4px 8px;border-radius:20px;background:#e8f2ff;color:#1856a3;font-weight:700;font-size:11px}.empty{padding:25px;text-align:center;color:var(--muted)}.empty.small{padding:16px}
.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#102436,#25445d)}.loginCard{background:#fff;width:min(390px,92vw);padding:30px;border-radius:16px;box-shadow:0 20px 60px #0004}.loginCard h1{margin-bottom:4px}.loginCard p{color:var(--muted)}.loginCard input{width:100%;padding:12px;margin:6px 0;border:1px solid var(--line);border-radius:8px}.loginCard button{width:100%;margin-top:8px}#loginMsg{font-size:13px;color:#b42318;margin-top:10px}
.modal{position:fixed;z-index:30;inset:0;background:#0a1622cc;display:grid;place-items:center;padding:20px}.modalCard{width:min(780px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;padding:20px}.modalHead{display:flex;justify-content:space-between;align-items:center}.modalHead h2{margin:0}.modalHead button,.drawerHead button{border:0;background:none;font-size:28px;cursor:pointer}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.field{display:flex;flex-direction:column;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700;color:var(--muted)}.field input,.field select,.field textarea,.tableTools input,.tableTools select{padding:10px;border:1px solid var(--line);border-radius:8px;background:#fff}.field textarea{min-height:90px}.field.checkbox{justify-content:end}.field.checkbox label{color:var(--text);font-weight:600;padding:8px 0}.field.checkbox input{width:auto;margin-right:7px}.actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;margin-top:5px}
.clientTabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.clientTabs button{border:1px solid var(--line);background:#fff;color:var(--muted);padding:9px 12px;border-radius:9px;cursor:pointer;font-weight:650}.clientTabs button.active{background:var(--nav);border-color:var(--nav);color:#fff}.clientTabs span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:10px;background:#eef2f6;color:inherit;font-size:10px;margin-left:5px}.clientTabs button.active span{background:#ffffff22}.clientCard{padding:0;overflow:hidden}.tableTools{display:flex;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}.tableTools input{flex:1}.clientLink{border:0;background:none;padding:0;text-align:left;cursor:pointer;color:var(--text)}.clientLink b{display:block}.clientLink small{display:block;color:var(--muted);margin-top:3px}.typePill{display:inline-block;padding:5px 8px;border-radius:7px;font-size:11px;font-weight:750;background:#eef2f6}.typePill.direct{background:#edf5ff;color:#245c9f}.typePill.family{background:#f0ecff;color:#634da1}.typePill.agency{background:#e9f8f4;color:#256c5c}.typePill.referral{background:#fff4dc;color:#8a6014}
.drawer{position:fixed;z-index:20;inset:0}.drawerBackdrop{position:absolute;inset:0;background:#0b1c2c73}.drawerPanel{position:absolute;right:0;top:0;height:100%;width:min(650px,96vw);background:#fff;box-shadow:-20px 0 50px #0a162222;overflow:auto}.drawerHead{position:sticky;top:0;background:#fff;z-index:2;padding:22px 24px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start}.drawerHead h2{margin:3px 0 0;font-size:26px}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:800;color:var(--blue)}#drawerBody{padding:20px 24px 40px}.drawerActions{display:flex;gap:8px;margin-bottom:18px}.profileGrid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:12px;overflow:hidden}.profileGrid>div{padding:14px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:70px}.profileGrid>div:nth-child(2n){border-right:0}.profileGrid span{display:block;color:var(--muted);font-size:11px;margin-bottom:6px}.profileGrid b{font-size:13px}.drawerSection{margin-top:24px}.drawerSection h3{margin:0 0 10px}.sectionHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.sectionHead h3{margin:0}.sectionHead span{background:#eef2f6;border-radius:12px;padding:3px 8px;font-size:11px}.person,.tourMini{display:flex;justify-content:space-between;gap:10px;padding:13px 0;border-bottom:1px solid var(--line)}.person b,.tourMini b{display:block;font-size:13px}.person small,.person span,.tourMini span{display:block;color:var(--muted);font-size:12px;margin-top:4px}.mini{align-self:start;background:#fff;border:1px solid var(--line);border-radius:7px;padding:6px 9px;cursor:pointer}.notesBox{white-space:pre-wrap;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:14px;color:#455466;font-size:13px;line-height:1.5}
@media(max-width:850px){.shell{grid-template-columns:1fr}aside{display:none}.stats{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.field.full{grid-column:auto}.profileGrid{grid-template-columns:1fr}.profileGrid>div{border-right:0}.tableTools{flex-direction:column}}

/* v0.3 — Tours */
.cardTitle{display:flex;align-items:flex-start;justify-content:space-between}.cardTitle h3{margin:0}.cardTitle p{margin:4px 0 10px;color:var(--muted);font-size:12px}.tourCard{padding:0;overflow:hidden}.tourPipeline{display:flex;gap:8px;overflow:auto;padding-bottom:12px}.tourPipeline button{min-width:max-content;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 11px;display:flex;align-items:center;gap:9px;cursor:pointer;color:var(--muted);font-weight:700;font-size:11px}.tourPipeline button:hover{border-color:#b8c6d4}.tourPipeline b{display:grid;place-items:center;min-width:21px;height:21px;padding:0 5px;border-radius:11px;background:#edf2f7;color:var(--text);font-size:10px}.tourLink{border:0;background:none;padding:0;text-align:left;cursor:pointer;color:var(--text)}.tourLink b{display:block;font-size:13px}.tourLink span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.statusPill{display:inline-block;padding:5px 8px;border-radius:7px;background:#eef2f6;color:#536273;font-size:10px;line-height:1;font-weight:800;letter-spacing:.025em;white-space:nowrap}.status-new-lead{background:#eef2f6;color:#506070}.status-working,.status-revision{background:#eef5ff;color:#315f9a}.status-proposal-sent,.status-option-hold,.status-deposit-requested{background:#fff4df;color:#8c641f}.status-confirmed,.status-operations{background:#e9f8f3;color:#26705d}.status-in-travel{background:#e8f2ff;color:#155dac}.status-completed{background:#edf7e9;color:#47723d}.status-closed{background:#edf0f3;color:#67717c}.status-cancelled{background:#fff0ef;color:#a2443d}
.tourPanel{width:min(980px,97vw)}.drawerMeta{display:flex;align-items:center;gap:10px;margin-top:8px;color:var(--muted);font-size:12px}.tourTopActions{display:flex;gap:8px;padding:20px 24px 0}.tourTopActions button:disabled{opacity:.45;cursor:not-allowed}.tourTabs{display:flex;gap:2px;overflow:auto;border-bottom:1px solid var(--line);padding:17px 24px 0}.tourTabs button{border:0;border-bottom:2px solid transparent;background:none;padding:10px 11px;color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer}.tourTabs button.active{color:var(--blue);border-bottom-color:var(--blue)}.tourTabContent{padding:20px 24px 42px}.tourHero{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;background:linear-gradient(135deg,#f8fafc,#eef4f9);border:1px solid var(--line);border-radius:14px;padding:20px}.tourHero h3{font-size:23px;margin:5px 0}.tourHero p{margin:0;color:var(--muted);line-height:1.5;max-width:580px}.tourValue{text-align:right;min-width:155px}.tourValue span,.tourOverviewGrid span,.relationsGrid span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.tourValue b{font-size:23px}.tourOverviewGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.tourOverviewGrid>div,.relationsGrid>div{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fff}.tourOverviewGrid b,.relationsGrid b{display:block;font-size:13px;line-height:1.4}.tourOverviewGrid small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.relationsGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.statusTrack{display:flex;gap:0;overflow:auto;padding:5px 0 10px}.statusTrack>div{position:relative;min-width:118px;padding-top:24px;color:#8994a0}.statusTrack>div:before{content:"";position:absolute;left:8px;right:-8px;top:8px;height:2px;background:#e1e6ec}.statusTrack>div:last-child:before{right:auto;width:0}.statusTrack i{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#dfe5eb;border:3px solid #fff;box-shadow:0 0 0 1px #dfe5eb}.statusTrack span{font-size:9px;font-weight:750;line-height:1.2;display:block;padding-right:8px}.statusTrack .done:before{background:#8fc8bb}.statusTrack .done i{background:#58a995;box-shadow:0 0 0 1px #58a995}.statusTrack .current i{background:var(--blue);box-shadow:0 0 0 2px var(--blue)}.statusTrack .current span{color:var(--text)}.modulePlaceholder{border:1px dashed #cbd5df;background:#fafcfd;border-radius:14px;padding:42px;text-align:center;margin-top:4px}.modulePlaceholder h3{margin:7px 0;font-size:21px}.modulePlaceholder p{max-width:570px;margin:0 auto;color:var(--muted);line-height:1.55}.notesBox.large{min-height:150px}.tourMiniButton{width:100%;border:0;background:#fff;text-align:left;cursor:pointer}.tourMiniButton:hover{background:#fafcfd}
@media(max-width:1050px){.tourOverviewGrid{grid-template-columns:1fr 1fr}.relationsGrid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.tourHero{flex-direction:column}.tourValue{text-align:left}.tourOverviewGrid,.relationsGrid{grid-template-columns:1fr}.tourTabs{padding-left:15px}.tourTabContent,.tourTopActions{padding-left:15px;padding-right:15px}}

/* v0.4 — Itinerary + Services */
.itineraryEmpty{border:1px dashed #cbd5df;background:#fbfcfd;border-radius:14px;padding:46px 28px;text-align:center}.itineraryEmpty h3{font-size:22px;margin:8px 0}.itineraryEmpty p{max-width:610px;margin:0 auto 18px;color:var(--muted);line-height:1.55}.itineraryToolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:13px 15px;background:#f8fafc;border:1px solid var(--line);border-radius:11px}.itineraryToolbar>div:first-child b{display:block;font-size:14px}.itineraryToolbar>div:first-child span{display:block;color:var(--muted);font-size:11px;margin-top:4px}.itineraryToolbar>div:last-child{display:flex;gap:8px;flex-wrap:wrap}.itDay{border:1px solid var(--line);border-radius:13px;background:#fff;margin-bottom:13px;overflow:hidden}.itDayHead{display:flex;justify-content:space-between;align-items:center;padding:14px 15px;background:#f8fafc;border-bottom:1px solid var(--line)}.itDayHead span{display:block;color:var(--blue);font-size:9px;font-weight:800;letter-spacing:.12em}.itDayHead h3{margin:4px 0 0;font-size:15px}.emptyDay{padding:18px;color:var(--muted);font-size:12px}.serviceList{display:flex;flex-direction:column}.serviceRow{display:grid;grid-template-columns:58px minmax(220px,1fr) 230px 120px;gap:13px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}.serviceRow:last-child{border-bottom:0}.serviceTime{font-weight:800;color:#31465b;font-size:13px}.serviceMain{min-width:0}.serviceTitle{display:flex;align-items:center;gap:8px;min-width:0}.serviceTitle b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.serviceType{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;background:#edf4fb;color:#34658f;padding:4px 6px;border-radius:5px;white-space:nowrap}.serviceMain small{display:block;color:var(--muted);margin-top:5px;font-size:11px}.serviceMain p{margin:6px 0 0;color:#536273;font-size:11px;line-height:1.45}.serviceMoney{display:grid;grid-template-columns:1fr 1fr;gap:5px 10px}.serviceMoney span{font-size:10px;color:var(--muted)}.serviceMoney b{display:block;color:var(--text);font-size:11px;margin-top:2px}.serviceMoney .margin{grid-column:1/-1}.serviceStatus{display:flex;flex-direction:column;align-items:flex-end;gap:7px}.status-to-be-reserved{background:#fff4df;color:#8c641f}.status-reserved{background:#e8f2ff;color:#155dac}.status-paid{background:#e9f8f3;color:#26705d}.status-cancelled{background:#fff0ef;color:#a2443d}
@media(max-width:900px){.serviceRow{grid-template-columns:50px 1fr}.serviceMoney{grid-column:2}.serviceStatus{grid-column:2;align-items:flex-start;flex-direction:row}.itineraryToolbar{align-items:flex-start;flex-direction:column}}@media(max-width:600px){.serviceRow{grid-template-columns:1fr}.serviceTime,.serviceMoney,.serviceStatus{grid-column:1}.serviceStatus{flex-direction:row}.itDayHead{align-items:flex-start}.serviceTitle{align-items:flex-start;flex-direction:column}}

/* v0.4.1 multi-day itinerary services */
.servicePhase{display:inline-flex;align-items:center;margin-left:8px;padding:3px 8px;border-radius:999px;background:#eef4f7;color:#526873;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.serviceDates{display:block;margin-top:5px;font-weight:700;color:#334e5b}
.serviceContinuation{background:rgba(247,250,251,.78)}
.serviceContinuation .serviceType{opacity:.82}
.continuedLabel{font-size:11px;color:#89969d;font-style:italic}


/* v0.4.2 — flexible itinerary days + clearer service scheduling */
.dayActions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.mini.danger{color:#9e3f38;border-color:#efd3d0;background:#fffafa}.mini.danger:hover{background:#fff0ef}.formSection{grid-column:1/-1;margin-top:7px;padding:11px 12px;border-radius:9px;background:#f6f9fc;border:1px solid #e4ebf2}.formSection span{display:block;font-size:9px;letter-spacing:.14em;font-weight:850;color:var(--blue);margin-bottom:3px}.formSection b{display:block;font-size:13px}.formSection small{display:block;color:var(--muted);font-size:11px;margin-top:4px;line-height:1.4}.staySummary{grid-column:1/-1;min-height:38px;padding:9px 12px;background:#eef6ff;border:1px solid #d9e9fb;border-radius:8px;color:#36566f;font-size:12px}.hotelFields{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.hotelFields.hidden{display:none!important}.modalCard:has(#entryForm[data-kind="service"]){width:min(900px,96vw)}#entryForm[data-kind="service"]{align-items:start}
@media(max-width:700px){.dayActions{justify-content:flex-end}.hotelFields{grid-template-columns:1fr}.formSection{margin-top:2px}}
