:root{--ink:#14211d;--muted:#6b7772;--paper:#f4f3ee;--surface:#fff;--line:#e5e5df;--mint:#c7f36b;--mint-dark:#7ca72d;--forest:#174b3a;--lav:#ddd3ff;--coral:#ff876f;--shadow:0 24px 70px rgba(26,43,36,.12);font-family:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}.muted{color:var(--muted);line-height:1.65}.eyebrow{margin:0 0 8px;color:#708078;font-size:12px;font-weight:800;letter-spacing:.14em}.hidden{display:none!important}
.auth-page{min-height:100vh;background:#dfe9df;padding:28px;display:grid;place-items:center}.auth-shell{width:min(1050px,100%);min-height:690px;display:grid;grid-template-columns:1.12fr .88fr;background:#fafaf7;border-radius:36px;overflow:hidden;box-shadow:var(--shadow)}.auth-shell.compact{min-height:740px}.brand-panel{position:relative;overflow:hidden;padding:58px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(145deg,#123c30,#1e6650);color:#fff}.brand-panel:after{content:"";position:absolute;width:470px;height:470px;border:1px solid rgba(255,255,255,.16);border-radius:50%;right:-170px;bottom:-155px;box-shadow:0 0 0 52px rgba(255,255,255,.035),0 0 0 110px rgba(255,255,255,.025)}.brand-mark{position:relative;z-index:1;width:52px;height:52px;border-radius:18px;background:#173b30 url("../img/app_icon.png") center/cover no-repeat;color:transparent;font-size:0;box-shadow:0 12px 32px rgba(0,0,0,.18)}.brand-mark.small{width:35px;height:35px;border-radius:11px}.brand-kicker{font-size:12px;letter-spacing:.18em;font-weight:800;color:#cce7d9}.brand-panel h1{position:relative;z-index:1;margin:10px 0 20px;font-size:49px;line-height:1.13;letter-spacing:-.045em}.brand-copy{position:relative;z-index:1;max-width:420px;color:#d9ebe3;line-height:1.8}.privacy-note{position:relative;z-index:1;padding:16px 18px;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:rgba(255,255,255,.08);backdrop-filter:blur(12px);font-size:13px}.privacy-note span{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:var(--mint);color:var(--forest)}.auth-card{padding:62px 58px;display:flex;flex-direction:column;justify-content:center}.mobile-logo{display:none;align-items:center;gap:10px;margin-bottom:44px}.auth-card h2{font-size:36px;letter-spacing:-.04em;margin:0 0 8px}.form-stack{display:grid;gap:17px;margin-top:26px}.form-stack label,.two-field label,.spaced{display:grid;gap:9px;font-size:13px;font-weight:700}.form-stack input,.two-field input,select{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;padding:15px 16px;outline:none;transition:.2s}.form-stack input:focus,.two-field input:focus,select:focus{border-color:#5e9d7d;box-shadow:0 0 0 4px rgba(94,157,125,.12)}.btn{border:0;border-radius:15px;padding:16px 20px;font-weight:800;cursor:pointer;transition:.2s}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between}.btn.primary span{color:var(--mint);font-size:19px}.btn.ghost{background:#ecece6;color:var(--ink)}.auth-link{text-align:center;color:var(--muted);font-size:14px;margin-top:25px}.auth-link a{font-weight:800;color:var(--forest)}.back-link{font-size:13px;color:var(--muted);margin-bottom:30px}.alert{padding:12px 14px;border-radius:12px;margin-top:14px;font-size:13px}.alert.error{background:#fff0ed;color:#a43e2e}.alert.success{background:#e8f8ee;color:#236341}.field-error{font-size:11px;color:#b54235}.consent-box{padding:15px;border-radius:16px;background:#f1f1eb}.check-row{display:flex!important;align-items:center;gap:10px!important;font-size:12px!important}.check-row+ .check-row{margin-top:10px}.check-row input{width:18px;height:18px}.check-row strong{color:var(--forest)}.data-pills{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:8px}.data-pills span{padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.14);font-size:12px}.data-pills .off{opacity:.65;text-decoration:line-through}
.onboarding-page{min-height:100vh;padding:24px;background:linear-gradient(145deg,#e9eee6,#f8f6ef)}.onboarding-shell{width:min(660px,100%);min-height:calc(100vh - 48px);margin:auto;padding:30px 38px 26px;background:rgba(255,255,255,.94);border-radius:32px;box-shadow:var(--shadow);display:flex;flex-direction:column}.onboarding-head{display:flex;align-items:center;justify-content:space-between}.onboarding-head .mobile-logo{display:flex;margin:0}.text-btn{border:0;background:none;color:var(--muted);cursor:pointer}.progress{height:5px;border-radius:5px;background:#ecece7;margin:30px 0 56px;overflow:hidden}.progress span{display:block;width:20%;height:100%;border-radius:5px;background:var(--forest);transition:.35s}.onboarding-shell form{display:flex;flex:1;flex-direction:column}.step{display:none;animation:fade .35s ease}.step.active{display:block}.step h1{margin:8px 0 15px;font-size:42px;line-height:1.18;letter-spacing:-.05em}.two-field{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:35px}.chip-grid{display:flex;flex-wrap:wrap;gap:10px;margin:32px 0}.choice-chip{padding:13px 17px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);cursor:pointer}.choice-chip.selected{background:var(--forest);border-color:var(--forest);color:#fff}.spaced{margin-top:28px}.slider-card{margin-top:15px;padding:20px;border:1px solid var(--line);border-radius:18px;background:#fff}.slider-card.accent{background:#f1f8e4}.slider-card div{display:flex;justify-content:space-between;margin-bottom:16px}.slider-card output{font-weight:800;color:var(--forest)}input[type=range]{width:100%;accent-color:var(--forest)}.permission-list{display:grid;gap:12px;margin-top:25px}.permission{display:grid;grid-template-columns:46px 1fr auto;align-items:center;gap:13px;padding:17px;border:1px solid var(--line);border-radius:18px}.permission-icon{width:42px;height:42px;border-radius:14px;background:#eef4e8;display:grid;place-items:center;font-size:20px}.permission span:nth-child(2){display:grid;gap:4px}.permission small{color:var(--muted);font-size:12px}.permission input{width:22px;height:22px;accent-color:var(--forest)}.safe-card{margin-top:18px;padding:17px;border-radius:17px;background:#f2effd}.safe-card p{margin:7px 0 0;font-size:12px;line-height:1.55;color:#655f74}.step-actions{display:flex;gap:12px;margin-top:auto;padding-top:35px}.step-actions .btn{flex:1}@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.app-page{background:#e8ece8}.phone-shell{position:relative;width:min(520px,100%);min-height:100vh;margin:auto;background:#f7f6f1;padding:28px 22px 0;box-shadow:0 0 60px rgba(20,33,29,.12)}.app-header{display:flex;justify-content:space-between;align-items:flex-start;padding:15px 2px 24px}.date-label{margin:0 0 8px;color:#7a857f;font-size:12px;font-weight:700}.app-header h1{margin:0;font-size:29px;line-height:1.2;letter-spacing:-.045em}.app-header h1 span{color:#557365}.avatar{width:43px;height:43px;border:0;border-radius:15px;background:var(--ink);color:var(--mint);font-weight:800}.context-strip{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:13px;padding:15px;border:1px solid #dfe4dc;border-radius:20px;background:#fff}.weather-orb{width:52px;height:52px;border-radius:17px;background:#e9f5cf;display:grid;grid-template-columns:1fr 1fr;place-items:center;padding:8px;font-size:13px}.context-strip>div:nth-child(2){min-width:0}.context-strip strong{font-size:14px}.context-strip p{margin:4px 0 0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.context-strip button{border:0;background:none;font-size:25px;color:#87918d}.section-head{display:flex;align-items:end;justify-content:space-between;margin:32px 2px 16px}.section-head h2{margin:0;font-size:22px;letter-spacing:-.035em}.why-btn{border:0;background:none;color:#47725f;font-size:12px;font-weight:800}.action-stack{display:grid;gap:13px}.action-card{position:relative;overflow:hidden;padding:20px;border:1px solid #e3e3dc;border-radius:24px;background:#fff;box-shadow:0 8px 24px rgba(28,45,39,.05)}.action-card.featured{background:linear-gradient(145deg,#193d32,#112b24);color:#fff;border-color:transparent;box-shadow:0 17px 40px rgba(15,47,37,.22)}.card-top{display:flex;align-items:center;gap:8px}.rank{font-size:11px;font-weight:800;opacity:.55}.badge{padding:5px 8px;border-radius:999px;background:#edf1eb;font-size:9px;font-weight:800;letter-spacing:.08em}.badge.break{background:#f2eefe;color:#654b9c}.featured .badge{background:rgba(199,243,107,.16);color:var(--mint)}.more{margin-left:auto;border:0;background:none;color:inherit;opacity:.5}.card-eyebrow{margin:17px 0 6px;font-size:11px;color:#7b8982}.featured .card-eyebrow{color:#aac2b8}.action-card h3{margin:0;font-size:24px;letter-spacing:-.04em}.card-desc{margin:9px 0 14px;color:#718079;font-size:13px}.featured .card-desc{color:#c2d4cc}.score-row{display:flex;align-items:center;gap:9px;font-size:10px;color:#75817b}.score-row b{font-size:12px;color:var(--ink)}.featured .score-row{color:#9fb6ac}.featured .score-row b{color:#fff}.score-row i{height:3px;flex:1;border-radius:3px;background:linear-gradient(90deg,var(--mint) 88%,rgba(128,128,128,.18) 88%)}.reason{width:100%;margin-top:15px;padding:12px;text-align:left;border:0;border-radius:14px;background:#f4f6f2;color:#425149;font-size:11px}.reason span{color:#5e8c40}.featured .reason{background:rgba(255,255,255,.08);color:#d9e6e0}.action-card footer{display:flex;align-items:center;justify-content:space-between;margin-top:15px;padding-top:14px;border-top:1px solid rgba(128,128,128,.18);font-size:10px;color:#718079}.go-btn{border:0;border-radius:10px;background:var(--ink);color:#fff;padding:9px 11px;font-size:10px;font-weight:700}.featured .go-btn{background:var(--mint);color:var(--ink)}.feedback-row{display:flex;gap:5px;margin-top:12px;overflow-x:auto}.feedback-row button{flex:none;border:1px solid rgba(128,128,128,.2);border-radius:999px;background:transparent;color:inherit;padding:6px 9px;font-size:9px;opacity:.75}.routine-card{margin:26px 0;padding:22px;border-radius:24px;background:#e5ddff;display:grid;grid-template-columns:90px 1fr;gap:18px}.routine-visual{position:relative;min-height:120px}.routine-visual span{position:absolute;border-radius:50%;background:#8d78ca}.routine-visual span:nth-child(1){width:72px;height:72px;left:0;top:20px}.routine-visual span:nth-child(2){width:42px;height:42px;right:0;top:2px;background:var(--mint)}.routine-visual span:nth-child(3){width:30px;height:30px;right:8px;bottom:0;background:var(--coral)}.routine-card h3{margin:5px 0 10px;font-size:20px}.routine-card>div:last-child>p:last-child{font-size:11px;line-height:1.6;color:#5f5871}/* WebView는 Flutter SafeArea(bottom) 위에 그려짐 → 시스템바 여백은 최소만 */
:root{--nav-safe-bottom:48px}
.bottom-space{height:calc(72px + var(--nav-safe-bottom))}
html,body.app-page{height:auto;min-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}
.privacy-page{padding-bottom:calc(72px + var(--nav-safe-bottom)) !important}
.bottom-nav{
  position:fixed !important;
  z-index:2147483000 !important;
  left:0 !important;
  right:0 !important;
  bottom:0 !important;
  width:100% !important;
  max-width:520px;
  margin:0 auto;
  transform:none !important;
  display:grid;
  grid-template-columns:1fr 1fr 1fr 1fr 1fr;
  align-items:center;
  gap:2px;
  min-height:0;
  height:auto;
  overflow:visible !important;
  /* 아이콘·글자는 위, 시스템바 영역은 padding으로만 비움 → 글자 안 잘림 */
  padding:10px 4px calc(8px + var(--nav-safe-bottom)) !important;
  background:#fff !important;
  border-top:1px solid #dfe4dc;
  box-sizing:border-box;
  touch-action:manipulation;
  pointer-events:auto;
  visibility:visible !important;
  opacity:1 !important;
}
@media (max-width:760px){
  .bottom-nav{ max-width:100%; }
  .bottom-space{ height:calc(72px + var(--nav-safe-bottom)); }
  .toast{bottom:calc(80px + var(--nav-safe-bottom))}
  .chat-shell{padding-bottom:calc(80px + var(--nav-safe-bottom))}
  .chat-page .phone-shell.chat-shell{padding-bottom:0}
}
.nav-item{
  display:grid;place-items:center;align-content:center;gap:2px;
  color:#2a3530;font-size:11px;font-weight:700;line-height:1.25;
  padding:6px 2px 8px;min-height:0;min-width:0;
  border-radius:14px;text-decoration:none;
  overflow:visible !important;
  -webkit-tap-highlight-color:rgba(23,75,58,.12);
  touch-action:manipulation;user-select:none;
  transition:background .12s ease,color .12s ease,transform .08s ease;
}
.nav-item > span:last-child{
  display:block;
  line-height:1.25;
  white-space:nowrap;
  overflow:visible;
}
.nav-item:active{transform:scale(.94);background:rgba(23,75,58,.08)}
.nav-item.active{
  color:var(--forest);font-weight:800;
  background:rgba(199,243,107,.45);
  box-shadow:inset 0 0 0 1px rgba(23,75,58,.12);
}
.nav-item.active .nav-icon{transform:scale(1.08)}
.nav-icon{font-size:16px;line-height:1;display:block}
.nav-main{
  justify-self:center;align-self:center;
  width:48px;height:48px;margin-top:0;
  border:3px solid #f7f6f1;border-radius:50%;
  background:var(--ink);color:var(--mint);font-size:16px;
  box-shadow:0 4px 10px rgba(20,33,29,.14);
  display:grid;place-items:center;text-decoration:none;
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:transform .08s ease,box-shadow .12s ease;
}
.nav-main:active{transform:scale(.92)}
.nav-main.active{
  background:var(--forest);
  color:var(--mint);
  box-shadow:0 0 0 3px rgba(199,243,107,.55),0 4px 10px rgba(20,33,29,.14);
}.explain-dialog{width:min(430px,calc(100% - 32px));max-height:min(86vh,640px);overflow-y:auto;-webkit-overflow-scrolling:touch;border:0;border-radius:28px;padding:28px;box-shadow:var(--shadow);background:#fff}.explain-dialog::backdrop{background:rgba(15,28,23,.45);backdrop-filter:blur(4px)}.explain-dialog.is-open-fallback{position:fixed;z-index:9999;left:50%;top:50%;transform:translate(-50%,-50%);display:block;max-width:calc(100% - 32px)}.detail-dialog .detail-type{margin:0 0 6px;font-size:12px;font-weight:700;color:#5f7368}.detail-dialog .detail-body{margin:0 0 12px;font-size:13px;line-height:1.55}.detail-meal-cta{margin:12px 0;padding:12px;border-radius:14px;background:#f3f6f1}.detail-meal-cta[hidden]{display:none!important}.dialog-close{float:right;border:0;background:#eee;border-radius:50%;width:32px;height:32px}.explain-dialog h2{font-size:25px}.explain-line{display:grid;gap:5px;padding:14px 0;border-bottom:1px solid var(--line)}.explain-line[hidden],.explain-line.is-empty{display:none!important}.explain-line span{font-size:10px;color:var(--muted)}.explain-line b{font-size:13px}.fine-print{font-size:11px;line-height:1.6;color:var(--muted)}.toast{position:fixed;z-index:20;left:50%;bottom:68px;transform:translate(-50%,20px);opacity:0;padding:12px 16px;border-radius:999px;background:var(--ink);color:#fff;font-size:12px;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
.simple-header{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;padding:12px 0 25px}.simple-header h1{text-align:center;font-size:18px}.simple-header a{font-size:22px}.safety-hero{padding:26px;border-radius:26px;background:linear-gradient(145deg,#153d31,#205d49);color:#fff}.shield{width:48px;height:48px;border-radius:16px;background:var(--mint);color:var(--forest);display:grid;place-items:center;font-weight:900}.safety-hero .eyebrow{margin-top:25px;color:#c9dfd6}.safety-hero h2{margin:7px 0 12px;font-size:29px}.safety-hero>p:last-child{font-size:12px;color:#c9dfd6;line-height:1.65}.settings-group{margin-top:25px}.settings-group h3{font-size:14px;margin:0 0 11px}.setting-row,.setting-link{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#fff;border-bottom:1px solid var(--line)}.setting-row:first-of-type,.setting-link:first-of-type{border-radius:18px 18px 0 0}.setting-row:last-of-type,.setting-link:last-of-type{border-radius:0 0 18px 18px;border-bottom:0}.setting-row span{display:grid;gap:4px;font-size:13px;font-weight:700}.setting-row small{font-weight:400;color:var(--muted)}.status{padding:6px 9px;border-radius:999px;background:#eee;color:#777;font-size:9px}.status.on{background:#e8f6d0;color:#4b6d1d}.memory-note{display:grid;grid-template-columns:25px 1fr auto;gap:10px;align-items:center;padding:14px;margin-bottom:8px;border-radius:16px;background:#fff}.memory-note p{margin:0;font-size:12px}.memory-note button{border:0;background:none;color:#4f7664;font-size:10px}.setting-link{font-size:13px}.setting-link b{color:#87918d;font-size:11px}.privacy-lock{width:100%;display:grid;grid-template-columns:42px 1fr auto;align-items:center;text-align:left;gap:11px;margin:25px 0;border:1px solid #f1c9c1;border-radius:18px;background:#fff3f0;padding:16px;color:#833629}.privacy-lock>span{width:38px;height:38px;border-radius:12px;background:#ffdcd4;display:grid;place-items:center}.privacy-lock div{display:grid;gap:4px}.privacy-lock small{font-size:10px;font-weight:400}.privacy-lock>b{font-size:11px}
@media(max-width:760px){.auth-page{padding:0;background:#fafaf7}.auth-shell,.auth-shell.compact{display:block;min-height:100vh;border-radius:0}.brand-panel{display:none}.auth-card{min-height:100vh;padding:18px 22px 28px;justify-content:flex-start}.mobile-logo{display:flex;margin:8px 0 18px}.auth-card h2{font-size:30px}.form-stack{margin-top:18px}.onboarding-page{padding:0}.onboarding-shell{min-height:100vh;border-radius:0;padding:24px 22px}.progress{margin-bottom:44px}.step h1{font-size:34px}.two-field{grid-template-columns:1fr}.phone-shell{box-shadow:none}}@media(min-width:900px){.phone-shell{margin-top:24px;min-height:calc(100vh - 48px);border-radius:32px 32px 0 0}.bottom-nav{bottom:0}.action-card{transition:.2s}.action-card:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(28,45,39,.1)}}


/* Personal AI Assistant UI */
:root{--display:Georgia,"Apple SD Gothic Neo","Malgun Gothic",serif;--moss:#d9e8cf}
.app-page{background:radial-gradient(circle at top,#dfeadf,#e8ece8 42%,#ece7dc)}
/* overflow 로 fixed 메뉴가 깨지지 않게 — clip도 쓰지 않음 */
.phone-shell{position:relative;background:linear-gradient(180deg,rgba(247,246,241,.96),#f4f6f1 28%,#f7f6f1);overflow:visible}
.phone-shell:before{content:"";position:absolute;inset:0 0 auto 0;height:160px;background:radial-gradient(circle at 18% 20%,rgba(199,243,107,.22),transparent 42%),radial-gradient(circle at 88% 0%,rgba(23,75,58,.1),transparent 36%);pointer-events:none}
.agent-topbar,.agent-greeting,.context-strip,.coach-mode,.section-head,.coach-stack,.action-stack,.routine-card,.mode-strip,.meal-results{position:relative;z-index:1}
.agent-topbar{display:flex;justify-content:space-between;align-items:center;padding:4px 2px 8px}
.agent-identity{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;position:relative;z-index:2}
a.avatar{width:43px;height:43px;border:0;border-radius:15px;background:var(--ink);color:var(--mint);font-weight:800;display:grid;place-items:center;text-decoration:none;position:relative;z-index:2;cursor:pointer}
.context-strip{cursor:pointer}
.plan-form{display:grid;gap:10px;padding:14px;border-radius:18px;background:#fff;border:1px solid #e2e7df;margin-bottom:14px}
.plan-form label{display:grid;gap:6px;font-size:12px;font-weight:700}
.plan-form input{border:1px solid var(--line);border-radius:12px;padding:12px}
.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.feedback-row button.selected{background:#173b30!important;border-color:#173b30!important;color:#c7f36b!important;opacity:1!important;font-weight:800}
.agent-orb{width:42px;height:42px;border-radius:16px;background:linear-gradient(145deg,#1a4d3c,#123529);display:grid;place-items:center;box-shadow:0 10px 24px rgba(18,53,41,.22)}
.agent-orb span{width:14px;height:14px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 6px rgba(199,243,107,.18);animation:pulseOrb 2.4s ease-in-out infinite}
.brand-word{margin:0;font-family:var(--display);font-size:18px;letter-spacing:-.03em}
.agent-status{margin:3px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;color:#6d7b74;font-size:11px;font-weight:600}
.agent-status i{width:7px;height:7px;border-radius:50%;background:#7bbf4a;box-shadow:0 0 0 4px rgba(123,191,74,.16)}
.agent-greeting{padding:6px 2px 12px}
.agent-greeting h1{margin:0;font-family:var(--display);font-size:28px;line-height:1.22;letter-spacing:-.045em}
.agent-greeting h1 span{color:#557365}
.mode-strip{margin:4px 0 14px;padding:14px 15px;border-radius:18px;background:#fff;border:1px solid #e2e7df}
.mode-label{margin:0 0 8px;font-size:11px;font-weight:800;letter-spacing:.08em;color:#6d7b74}
.mode-chips{display:flex;flex-wrap:wrap;gap:8px}
.mode-chips button{border:1px solid #d7ddd4;border-radius:999px;background:#f7f8f4;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer}
.mode-chips button.selected{background:#173b30;border-color:#173b30;color:#c7f36b}
.mode-hint{margin:10px 0 0;font-size:11px;color:#718079;line-height:1.5}
.mode-places{margin:4px 0 0;font-size:11px;color:#5f6f66;line-height:1.45;font-weight:600}
.rec-anchor{margin:0 0 12px;padding:10px 12px;background:#eef3ea;border-radius:14px;font-size:12px;color:#4d5c54;display:flex;flex-wrap:wrap;align-items:center;gap:8px;line-height:1.4}
.rec-anchor span{font-weight:600;color:#718079}
.rec-anchor b{font-weight:800;color:#1f2a24}
.rec-anchor .place-link{margin-left:auto}
.place-addr a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.stay-register{margin-top:12px;padding-top:12px;border-top:1px dashed #dce3d8}
.stay-register-lead{margin:0 0 8px;font-size:12px;color:#4f6558;line-height:1.45;font-weight:600}
.stay-register-row{display:flex;gap:8px;align-items:center}
.stay-register-row input{flex:1;min-width:0;border:1px solid #d7ddd4;border-radius:12px;padding:10px 12px;font-size:13px;background:#f7f8f4}
.stay-register-row .btn{flex:none;padding:10px 14px;font-size:12px;border-radius:12px}
.stay-quick{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.stay-quick button{border:1px solid #d7ddd4;border-radius:999px;background:#fff;padding:6px 10px;font-size:11px;font-weight:700;color:#4f6558;cursor:pointer}
.stay-quick button:hover{border-color:#173b30;color:#173b30}
.stay-skip{display:block;width:100%;margin-top:10px;border:0;background:transparent;padding:8px 4px;font-size:12px;font-weight:700;color:#6b7c72;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.stay-skip:hover{color:#173b30}
.mode-hint.stay-known{color:#173b30;font-weight:700}
.coach-mode{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-top:16px;padding:16px 17px;border-radius:20px;background:linear-gradient(135deg,#eef5e6,#e4efe0);border:1px solid #d7e6c8}
.coach-mode.agent-voice{align-items:center}
.agent-mini{flex:none;width:36px;height:36px;border-radius:12px;background:var(--forest);color:var(--mint);display:grid;place-items:center;font-weight:900;font-size:11px}
.coach-mode strong{display:block;margin:2px 0 6px;font-size:15px}
.coach-mode p{margin:0;color:#617066;font-size:12px;line-height:1.55}
.coach-pill{flex:none;padding:7px 10px;border-radius:999px;background:#fff;font-size:10px;font-weight:800;color:#4f6d2a}
.coach-pill.ready{background:#173b30;color:#c7f36b}
.coach-stack{display:grid;gap:12px;margin-bottom:8px}
.coach-card{padding:18px;border-radius:22px;background:#fff;border:1px solid #e3e3dc;box-shadow:0 8px 24px rgba(28,45,39,.05)}
.coach-card.agent-ask{border-color:#d5e4cb;background:linear-gradient(180deg,#fbfff7,#fff)}
.ask-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.ask-badge{padding:5px 8px;border-radius:999px;background:#173b30;color:var(--mint);font-size:9px;font-weight:800}
.coach-card h3{margin:0 0 8px;font-family:var(--display);font-size:24px;letter-spacing:-.04em}
.coach-options{display:grid;gap:8px;margin-top:14px}
.coach-text-row{margin-top:12px}
.coach-text-row input{width:100%;border:1px solid #d7ddd4;border-radius:14px;padding:12px 14px;font-size:13px;box-sizing:border-box}
.coach-options button{border:1px solid #d7ddd4;border-radius:14px;background:#f7f8f4;padding:12px 14px;text-align:left;font-size:13px;font-weight:700;cursor:pointer}
.coach-options button.selected,.coach-options button:hover{border-color:#174b3a;background:#e8f3ea}
.coach-card.answered{opacity:.72}
.section-head h2,.action-card h3,.routine-card h3,.explain-dialog h2{font-family:var(--display)}
.badge.break{background:#eef6e4;color:#4f6d2a}
.routine-card{background:linear-gradient(145deg,#e7f0df,#dce8d4)}
.routine-visual span{background:#6f8f5d}
.routine-card>div:last-child>p:last-child{color:#4f6558}
.coach-mode-body{min-width:0;flex:1}
.collect-me-link{display:inline-block;margin-top:10px;font-size:12px;font-weight:800;color:#173b30;text-decoration:none;border-bottom:1px solid rgba(23,59,48,.25)}
.collect-next{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}
.collect-next li{padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.72);border:1px solid #dce8d3}
.collect-next b{display:block;font-size:12px;color:#173b30;margin-bottom:3px}
.collect-next span{font-size:11px;color:#617066;line-height:1.4}
.collect-tabs{display:flex;flex-wrap:wrap;gap:6px}
.collect-tabs button{border:1px solid #d7ddd4;border-radius:999px;background:#f7f8f4;padding:7px 12px;font-size:12px;font-weight:700;cursor:pointer;color:#1a2e26}
.collect-tabs button.selected{background:#173b30;border-color:#173b30;color:#c7f36b}
.collect-item{padding:12px 0;border-bottom:1px solid #eef1ec}
.collect-item:last-child{border-bottom:0;padding-bottom:0}
.collect-item:first-child{padding-top:0}
.collect-item-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.collect-item-head strong{display:block;font-size:13px;color:#1a2e26}
.collect-item-head small{display:block;margin-top:3px;font-size:11px;color:#6b7772;line-height:1.4}
.collect-item-head .status{max-width:42%;text-align:right;font-size:11px;line-height:1.3;word-break:keep-all}
.collect-fill-form{margin-top:10px}
.collect-suggest{display:flex;flex-wrap:nowrap;gap:6px;margin-bottom:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.collect-chip{flex:none;border:1px solid #d7ddd4;border-radius:999px;background:#f7f8f4;padding:5px 10px;font-size:11px;font-weight:700;cursor:pointer;color:#1a2e26;white-space:nowrap}
.collect-chip:hover{border-color:#173b30;background:#eef6e4}
.applied-rhythm-chips{display:flex;flex-wrap:wrap;gap:6px}
.applied-chip{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eef6e4;border:1px solid #d5e4c8;font-size:11px;font-weight:700;color:#173b30}
.applied-rhythm-card{padding:12px 0;border-bottom:1px solid #eef1ec;display:grid;gap:8px}
.applied-rhythm-card:last-child{border-bottom:0;padding-bottom:0}
.applied-rhythm-head{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.applied-rhythm-head strong{font-size:14px;color:#1a2e26}
.applied-rhythm-head input[type=time]{border:1px solid var(--line);border-radius:12px;padding:8px 10px;font-size:13px}
.applied-rhythm-actions{display:flex;justify-content:flex-end}
.collect-input-row input[type=text]{border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13px;min-width:0}
.perm-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;background:#fff;border-bottom:1px solid var(--line)}
.perm-row:first-of-type{border-radius:18px 18px 0 0}
.perm-row:last-of-type{border-radius:0 0 18px 18px;border-bottom:0}
.perm-row>span{display:flex;flex-direction:column;gap:3px;font-size:13px;font-weight:700;color:#1a2e26;min-width:0;flex:1}
.perm-row>span small{font-size:11px;font-weight:500;color:#6b7772;line-height:1.35}
.perm-actions{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0}
.perm-actions .status{font-size:11px;font-weight:700;padding:6px 10px;border-radius:999px;background:#eef1ec;color:#5f6d66;white-space:nowrap;line-height:1.2}
.perm-actions .status.on{background:#e7f6df;color:#236341}
.perm-actions .btn{padding:6px 12px;font-size:11px;min-width:56px;justify-content:center;white-space:nowrap}
.need-group-label{margin:12px 0 8px;font-size:12px;font-weight:800;color:#4f6558}
.need-custom-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:14px}
.need-custom-row input{border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:13px}
.choice-chip.custom-need{border-color:#173b30;background:#eef6e4}
.rhythm-editor,.rhythm-form{display:flex;flex-direction:column;gap:8px}
.rhythm-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:#fbfcfa;cursor:pointer}
.rhythm-row.selected,.rhythm-row:has(input[data-rhythm-toggle]:checked){border-color:#173b30;background:#f3f8ee}
.rhythm-label{font-size:13px;font-weight:700;color:#1a2e26;display:flex;flex-direction:column;gap:2px}
.rhythm-label small{font-size:11px;font-weight:500;color:#6b7772}
.rhythm-row input[type=time]{border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px;background:#fff}
.rhythm-row input[type=time]:disabled{opacity:.45}
.rhythm-custom-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px}
.rhythm-custom-row input[type=text],.rhythm-custom-row input[type=time]{border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:13px}
.feedback-hint{margin:10px 0 0;font-size:11px;color:#6d7b74}
.feedback-row button.selected{background:#173b30;border-color:#173b30;color:#c7f36b;opacity:1}
.action-card.dismissed{opacity:.55;filter:grayscale(.2)}
.meta-travel{font-weight:700;color:#4f6558}
.featured .meta-travel{color:#d9e6e0}
.remember-row{margin-top:2px!important;font-weight:600!important;color:#4f6558}
.nav-main{display:grid;place-items:center;text-decoration:none}
a.avatar{display:grid;place-items:center;text-decoration:none}
@keyframes pulseOrb{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.08);opacity:1}}

/* Chat coach */
.chat-shell{display:flex;flex-direction:column;min-height:100vh;padding-bottom:68px}
.chat-page .phone-shell.chat-shell{
  height:100dvh;min-height:100dvh;max-height:100dvh;
  padding:10px 14px 0;overflow:hidden;box-sizing:border-box;
}
.chat-page .chat-header.simple-header{padding:2px 0 6px}
.chat-page .chat-header.simple-header h1{font-size:16px;margin:0}
.chat-intro{padding:8px 4px 14px}
.chat-page .chat-intro{padding:0 2px 6px;flex-shrink:0}
.chat-page .chat-intro>p{margin:0;color:#65756d;font-size:12px;line-height:1.45}
.chat-intro h2{margin:4px 0 8px;font-family:var(--display);font-size:26px;letter-spacing:-.04em}
.chat-intro>p{margin:0;color:#65756d;font-size:13px;line-height:1.55}
.chat-provider{display:inline-block;margin-top:10px!important;padding:6px 10px;border-radius:999px;background:#ecefe8;font-size:11px!important;font-weight:700;color:#5f6f66}
.chat-provider.ready{background:#173b30;color:#c7f36b}
.chat-thread{flex:1;display:grid;gap:10px;align-content:start;max-height:46vh;overflow:auto;padding:4px 2px 12px}
.chat-page .chat-thread{
  flex:1 1 auto;min-height:0;max-height:none;overflow:auto;
  padding:4px 2px 8px;-webkit-overflow-scrolling:touch;
}
.chat-bubble{max-width:88%;padding:12px 14px;border-radius:18px;font-size:14px;line-height:1.55}
.chat-bubble p{margin:0;white-space:pre-wrap}
.chat-bubble.assistant{justify-self:start;background:#fff;border:1px solid #e2e7df;border-bottom-left-radius:6px}
.chat-bubble.user{justify-self:end;background:#173b30;color:#eef6e8;border-bottom-right-radius:6px}
.chat-bubble.typing{opacity:.72}
.chat-chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 10px}
.chat-page .chat-chips{flex-shrink:0;padding:2px 0 6px;gap:6px;max-height:72px;overflow:auto}
.chat-chips button{border:1px solid #d7ddd4;border-radius:999px;background:#fff;padding:8px 12px;font-size:12px;font-weight:700;cursor:pointer}
.chat-chips button:hover{border-color:#174b3a;background:#e8f3ea}
.chat-places{display:grid;gap:8px;margin-bottom:10px}
.chat-page .chat-places{flex-shrink:0;max-height:min(32vh,220px);overflow:auto;margin-bottom:6px}
.chat-place-card{padding:12px 14px;border-radius:16px;background:#fff;border:1px solid #e2e7df}
.chat-place-card strong{display:block;font-size:14px}
.chat-place-card span{display:block;margin-top:4px;font-size:11px;color:#65756d;font-weight:700}
.chat-place-card p{margin:6px 0 0;font-size:12px;color:#718079}
.chat-composer{position:sticky;bottom:64px;z-index:6;display:grid;grid-template-columns:44px 1fr 44px;gap:8px;padding:10px;border-radius:18px;background:rgba(255,255,255,.96);border:1px solid #e2e7df;box-shadow:0 10px 28px rgba(20,33,29,.08)}
.chat-page .chat-composer{position:relative;bottom:auto;flex-shrink:0;margin:0;padding:8px}
.chat-page .chat-mic-hint{flex-shrink:0;margin:4px 2px 0}
.chat-page .chat-bottom-space{height:calc(58px + var(--nav-safe-bottom));flex-shrink:0}
.chat-composer input{border:0;outline:none;background:transparent;padding:8px 6px;font-size:14px}
.chat-composer button{border:0;border-radius:14px;background:#173b30;color:#c7f36b;font-size:18px;font-weight:800;cursor:pointer}
.chat-composer .chat-mic{background:#eef3ea;color:#173b30;font-size:16px}
.chat-composer .chat-mic.is-recording{background:#c0392b;color:#fff;animation:chat-mic-pulse 1.1s ease-in-out infinite}
@keyframes chat-mic-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.chat-mic-hint{margin:6px 4px 0;font-size:11px;color:#718079}
.chat-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 10px}
.chat-page .chat-tabs{gap:6px;margin:0 0 6px;flex-shrink:0}
.chat-page .chat-tabs button{padding:8px 10px;font-size:12px}
.chat-tabs button{border:1px solid #d7ddd4;border-radius:14px;background:#fff;padding:10px 12px;font-size:13px;font-weight:800;color:#5f6f66;cursor:pointer}
.chat-tabs button.selected{background:#173b30;border-color:#173b30;color:#c7f36b}
.chat-bubble-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chat-action-btn{border:1px solid #d7ddd4;border-radius:999px;background:#f7f8f4;padding:6px 10px;font-size:11px;font-weight:700;color:#174b3a;cursor:pointer}
.chat-bubble-tip{margin:8px 0 0!important;font-size:11px!important;color:#718079!important;line-height:1.4!important}
.chat-detail-dialog{border:0;border-radius:22px;padding:0;width:min(92vw,420px);max-height:82vh;background:#f7f8f4}
.chat-detail-dialog::backdrop{background:rgba(20,33,29,.45)}
.chat-detail-sheet{padding:16px}
.chat-detail-sheet header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.chat-detail-sheet h3{margin:0;font-size:16px}
.chat-detail-close{border:0;background:transparent;font-size:22px;cursor:pointer;line-height:1}
.chat-detail-body{font-size:13px;line-height:1.55;color:#1f2a24;max-height:40vh;overflow:auto}
.chat-detail-body p{margin:0 0 8px}
.chat-detail-disclaimer{margin:10px 0;font-size:11px}
.chat-detail-places{display:grid;gap:8px}
.nav-main.active{box-shadow:0 0 0 2px rgba(199,243,107,.4)}
.need-chip-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.need-chip-grid .choice-chip{font-size:12px}

/* Schedule plans */
.schedule-hero{margin-bottom:14px}
.plan-tabs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:0 0 12px}
.plan-tabs a{display:flex;align-items:center;justify-content:center;gap:6px;padding:11px 8px;border-radius:14px;background:#fff;border:1px solid #e2e7df;font-size:12px;font-weight:800;color:#5f6f66;text-decoration:none}
.plan-tabs a b{font-size:11px;color:#8a968f}
.plan-tabs a.active{background:#173b30;border-color:#173b30;color:#c7f36b}
.plan-tabs a.active b{color:#c7f36b}
.plan-today-banner{margin:0 0 12px;padding:14px 16px;border-radius:16px;background:#fff;border:1px solid #e2e7df}
.plan-today-banner>span{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.08em;color:#6b7772}
.plan-today-banner strong{display:block;margin:6px 0 0;font-family:var(--display);font-size:20px;letter-spacing:-.03em;color:#173b30;line-height:1.35;font-weight:800}
.plan-date-jump{margin:0 0 12px;padding:12px 14px;border-radius:16px;background:#fff;border:1px solid #e2e7df}
.plan-date-jump label{display:grid;gap:6px;font-size:12px;font-weight:700}
.plan-date-jump input[type=date]{border:1px solid var(--line);border-radius:12px;padding:11px 12px}
.plan-focus-label{margin:8px 0 0;font-size:12px;font-weight:700;color:#4f6558}
.plan-filter-clear{display:inline-block;margin-top:8px;font-size:12px;font-weight:700;color:#5f6f66}
.plan-composer{margin:0 0 16px;padding:0;border-radius:18px;background:#fff;border:1px solid #e2e7df;overflow:hidden}
.plan-composer>summary{list-style:none;cursor:pointer;padding:14px 16px;font-size:13px;font-weight:800;color:#173b30;background:#f3f7ef}
.plan-composer>summary::-webkit-details-marker{display:none}
.plan-composer[open]>summary{border-bottom:1px solid #e5e8e2}
.plan-composer .plan-form{margin:0;border:0;box-shadow:none;border-radius:0}
.plan-composer-hint{margin:0 0 8px;font-size:11px}
.plan-allday{margin-top:4px!important}
.plan-card{padding:14px 16px;margin-bottom:10px;border-radius:18px;background:#fff;border:1px solid #e2e7df}
.plan-card.plan-todo{border-color:#cfe0c0;background:#f7fbf2}
.plan-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.plan-badge{padding:5px 8px;border-radius:999px;background:#eef6e4;color:#4f6d2a;font-size:10px;font-weight:800}
.plan-card.plan-todo .plan-badge{background:#dff0c8}
.plan-card h4{margin:0 0 6px;font-family:var(--display);font-size:20px;letter-spacing:-.03em}
.plan-status{margin:0;font-size:14px;font-weight:800;color:#173b30;line-height:1.4}
.plan-progress{margin:6px 0 0;font-size:12px;line-height:1.45;color:#5f6f66}
.plan-memo{margin:8px 0 0;font-size:12px;line-height:1.5;color:#65756d}

/* Discover map + mobility */
.discover-hint{margin:-4px 2px 12px;color:#65756d;font-size:12px;line-height:1.55}
.discover-map{height:220px;margin:0 0 12px;border-radius:22px;border:1px solid #d7e0d4;overflow:hidden;background:#dfe8d8;box-shadow:0 10px 28px rgba(20,33,29,.08);z-index:1}
.discover-map.discover-map-empty{display:flex;align-items:center;justify-content:center}
.discover-map-link{display:inline-flex;padding:12px 16px;border-radius:999px;background:#174b3a;color:#fff;font-size:13px;font-weight:700;text-decoration:none}
.discover-map-fallback{margin:-4px 0 12px;font-size:12px}
.taxi-banner{margin:0 2px 12px;padding:10px 12px;border-radius:14px;background:#fff7e8;border:1px solid #f0d7a8;color:#8a5a12;font-size:12px;font-weight:700}
.care-banner{margin:0 2px 12px;padding:10px 12px;border-radius:14px;background:#e8f3ef;border:1px solid #b7d7cb;color:#1f4d3f;font-size:12px;font-weight:700;line-height:1.45}
.care-banner.night{background:#1f2a36;border-color:#314557;color:#d7e7ff}
.taxi-pill{margin-left:auto;padding:5px 8px;border-radius:999px;background:#fff3d6;color:#9a6700;font-size:9px;font-weight:800}
.taxi-prompt{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#fff8eb;color:#7a5310;font-size:12px;line-height:1.45}
.discover-actions{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:8px;margin-top:12px}
.discover-btn{display:grid;place-items:center;min-height:40px;border-radius:12px;border:1px solid #d7ddd4;background:#f7f8f4;color:#31463c;font-size:11px;font-weight:800;text-decoration:none;cursor:pointer}
.discover-btn.primary{background:#173b30;border-color:#173b30;color:#c7f36b}
.discover-btn.taxi{background:#fff3d6;border-color:#f0d7a8;color:#8a5a12}
.discover-btn.ghost{background:#fff}
.discover-more{display:grid;place-items:center;margin:8px 0 0;padding:14px;border-radius:16px;background:#173b30;color:#c7f36b;font-size:13px;font-weight:800;text-decoration:none}
.discover-more.ghost{background:#fff;color:#31463c;border:1px solid #e2e7df}
.weather-assist{margin:10px 0 16px;padding:14px 14px 12px;border-radius:18px;background:#fff;border:1px solid #e5e8e2}
.weather-assist .eyebrow{margin-bottom:10px}
.weather-tip-row{display:grid;gap:8px}
.weather-tip{padding:10px 12px;border-radius:12px;background:#f4f7f1}
.weather-tip b{display:block;font-size:12px;color:#173b30;margin-bottom:4px}
.weather-tip p{margin:0;font-size:12px;line-height:1.45;color:#4f6558}
.weather-place{margin:0 0 2px;font-size:12px;font-weight:800;color:#173b30;line-height:1.35}
.weather-kind{margin:0 0 2px;font-size:10px;font-weight:800;letter-spacing:.04em;color:#6b7772}
.weather-dialog-kind{margin:0 0 2px;font-size:11px;font-weight:800;color:#6b7772}
.weather-dialog-place{margin:0 0 4px;font-size:15px;font-weight:800;color:#173b30;line-height:1.4}
.weather-dialog-address-hint{margin:0 0 10px!important;font-size:12px!important}
.weather-places,.weather-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.weather-chip{border:1px solid #d7e0d4;background:#eef6e4;color:#4f6d2a;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:800;cursor:pointer}
.weather-chip.active{background:#173b30;border-color:#173b30;color:#c7f36b}
.weather-switch-label{display:block;margin:12px 0 6px;font-size:12px;font-weight:800;color:#31463c}
.weather-place-select{width:100%;margin-top:4px;border:1px solid #d7e0d4;border-radius:14px;padding:12px 14px;font-size:13px;font-weight:700;color:#1a2e26;background:#fff;appearance:auto}
.weather-dialog .weather-place-select{margin:0 0 12px}
.weather-lookup-row{display:none}

/* pull to refresh */
.pull-refresh{
  position:fixed;top:0;left:0;right:0;z-index:80;
  display:flex;align-items:flex-end;justify-content:center;
  height:var(--pull,0px);overflow:hidden;pointer-events:none;
  transition:height .15s ease;
  background:linear-gradient(180deg,rgba(247,246,241,.96),rgba(247,246,241,0));
}
.pull-refresh.visible{transition:none}
.pull-refresh span{
  margin-bottom:10px;padding:7px 12px;border-radius:999px;
  background:#173b30;color:#c7f36b;font-size:11px;font-weight:800;
  opacity:.55;transform:scale(.92);transition:.15s;
}
.pull-refresh.ready span,.pull-refresh.refreshing span{opacity:1;transform:scale(1)}
.pull-refresh.refreshing{height:56px!important}
.pull-refresh.refreshing span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:8px;border:2px solid #c7f36b;border-top-color:transparent;border-radius:50%;vertical-align:-1px;animation:pull-spin .7s linear infinite}
@keyframes pull-spin{to{transform:rotate(360deg)}}
.today-todo-board{margin:0 0 16px;padding:14px 16px;border-radius:18px;background:#fff;border:1px solid #e2e7df}
.today-todo-board h3{margin:4px 0 10px;font-family:var(--display);font-size:18px;letter-spacing:-.03em}
.today-todo-board ul{margin:0;padding-left:18px}
.today-todo-board li{margin:0 0 6px;font-size:13px;line-height:1.45;color:#31463c;font-weight:700}
.todo-capture{display:grid;gap:10px;margin:10px 0 12px;padding:12px;border-radius:14px;background:#f4f7f1;border:1px solid #e2e7df}
.todo-capture-field{display:grid;gap:6px;margin:0}
.todo-capture-label{display:block;font-size:12px;font-weight:800;letter-spacing:-0.01em;color:#5f6f66;white-space:nowrap}
.todo-capture input{width:100%;border:1px solid #d7e0d4;border-radius:12px;padding:11px 12px;font-size:13px;font-weight:600;background:#fff}
.todo-actions{display:grid;gap:8px;margin-top:4px}
.todo-capture .todo-save,.todo-capture .todo-dismiss{width:100%;justify-content:center}
.todo-capture .todo-dismiss{background:#fff;color:#4a5b53;border:1px solid #d0d8cf;font-weight:700}
.todo-capture-hint{margin:2px 0 0;font-size:11px!important}
.place-panel{margin:0 0 10px;padding:10px 12px;border-radius:14px;background:rgba(23,75,58,.06);display:grid;gap:6px}
.featured .place-panel{background:rgba(255,255,255,.08)}
.place-panel p{margin:0;font-size:12px;line-height:1.45;color:#3f5349;display:grid;grid-template-columns:52px 1fr;gap:6px;align-items:start}
.place-panel p span{color:#6b7c73;font-weight:600}
.place-panel p b{font-weight:700;color:#174b3a}
.featured .place-panel p{color:#d7e6de}
.featured .place-panel p span{color:#a9c0b5}
.featured .place-panel p b{color:#f2f8f4}
.place-addr,.place-kind{margin:0 0 8px;font-size:12px;color:#5f6f66;line-height:1.4}
.place-kind b{color:#174b3a;font-weight:800}
.featured .place-addr,.featured .place-kind{color:#c2d4cc}
.featured .place-kind b{color:#e8f2ec}
.place-extra-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.place-more-btn{display:inline-flex;align-items:center;justify-content:center;padding:7px 11px;border-radius:999px;border:1px solid #c5d2c8;background:#fff;color:#174b3a;font-size:11px;font-weight:700;cursor:pointer}
.place-more-btn.primary{background:#174b3a;border-color:#174b3a;color:#fff}
.featured .place-more-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.28);color:#e8f2ec}
.featured .place-more-btn.primary{background:#c7f36b;border-color:#c7f36b;color:#174b3a}
.place-links{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.place-link{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border-radius:999px;border:1px solid #d0d8cf;background:#fff;color:#174b3a;font-size:11px;font-weight:700;text-decoration:none}
.place-link.primary{background:#174b3a;border-color:#174b3a;color:#fff}
.featured .place-link{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#e8f2ec}
.featured .place-link.primary{background:#c7f36b;border-color:#c7f36b;color:#174b3a}
.detail-place-links{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.detail-place-links[hidden]{display:none!important}
.detail-more-row{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}
.detail-more-row[hidden]{display:none!important}
.nav-options{margin:10px 0 4px;padding:12px;border-radius:16px;background:rgba(23,75,58,.05)}
.nav-options[hidden]{display:none!important}
.nav-options-label{margin:0 0 10px;font-size:12px;font-weight:800;color:#174b3a;letter-spacing:.02em}
.map-app-pick{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.map-app-btn{min-height:44px;border:1px solid #c9d4cc;border-radius:12px;background:#fff;color:#173b30;font-size:12px;font-weight:800;cursor:pointer}
.map-app-btn.selected{border-color:#174b3a;background:#174b3a;color:#fff}
.map-app-pane{margin-top:12px;padding-top:10px;border-top:1px solid #dce4de}
.map-app-pane[hidden]{display:none!important}
.map-app-pane-hint{margin:0 0 8px;font-size:11px;font-weight:800;color:#174b3a}
.route-map-groups{display:grid;gap:12px}
.route-map-group{display:grid;gap:6px}
.route-map-name{font-size:11px;font-weight:800;color:#174b3a}
.route-nav-grid{margin:0}
.route-nav-grid .place-link{flex:1 1 calc(50% - 8px);min-width:120px}
.discover-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.filter-chip{padding:8px 12px;border-radius:999px;border:1px solid #d7ddd4;background:#fff;font-size:12px;font-weight:800;color:#4f6558;text-decoration:none}
.filter-chip.active{background:#173b30;border-color:#173b30;color:#c7f36b}
.score-pill{padding:5px 8px;border-radius:999px;background:#eef6e4;color:#4f6d2a;font-size:9px;font-weight:800}
.opinion-preview{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#f4f7f1;color:#4f6558;font-size:12px;line-height:1.45}
.why-list{display:grid;gap:8px;margin:12px 0 16px}
.why-item{margin:0;padding:10px 12px;border-radius:12px;background:#f4f7f1;font-size:12px;line-height:1.45;color:#31463c}
.detail-sub{margin:0 0 8px;font-size:14px}
.opinion-list{display:grid;gap:8px;margin-bottom:14px;max-height:180px;overflow:auto}
.opinion-card{padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #e5e8e2}
.opinion-card b{font-size:12px;color:#7a5310}
.opinion-card p{margin:6px 0 4px;font-size:12px;line-height:1.45}
.opinion-card small{color:#8a968f;font-size:10px}
.opinion-form{display:grid;gap:10px;margin-bottom:14px}
.opinion-form label{display:grid;gap:6px;font-size:12px;font-weight:700}
.opinion-form input,.opinion-form select{border:1px solid var(--line);border-radius:12px;padding:11px 12px}

/* Login ??mobile-first filled composition */
.login-page{background:#e7eee6}
.login-shell{overflow:hidden}
.login-card{
  display:flex;
  flex-direction:column;
  min-height:100%;
  position:relative;
  z-index:1;
}
.login-hero{
  position:relative;
  overflow:hidden;
  flex:0 0 auto;
  margin:0 0 18px;
  padding:28px 22px 26px;
  border-radius:0 0 28px 28px;
  background:linear-gradient(155deg,#123529 0%,#174b3a 48%,#1f5f4a 100%);
  color:#eef6e8;
  box-shadow:0 18px 40px rgba(18,53,41,.18);
}
.login-hero:before{
  content:"";
  position:absolute;
  width:220px;height:220px;
  right:-70px;top:-80px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(199,243,107,.28),transparent 68%);
  pointer-events:none;
}
.login-hero:after{
  content:"";
  position:absolute;
  width:160px;height:160px;
  left:-50px;bottom:-70px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.12);
  pointer-events:none;
}
.login-hero-orb{
  position:relative;
  width:42px;height:42px;
  border-radius:15px;
  background:rgba(255,255,255,.08);
  display:grid;place-items:center;
  margin-bottom:18px;
}
.login-hero-orb span{
  width:14px;height:14px;border-radius:50%;
  background:#c7f36b;
  box-shadow:0 0 0 6px rgba(199,243,107,.18);
  animation:pulseOrb 2.4s ease-in-out infinite;
}
.login-brand{
  position:relative;
  margin:0 0 8px;
  font-size:12px;
  font-weight:800;
  letter-spacing:.14em;
  color:#c7f36b;
}
.login-hero h1{
  position:relative;
  margin:0 0 8px;
  font-family:var(--display);
  font-size:34px;
  letter-spacing:-.045em;
  line-height:1.15;
}
.login-hero p:last-child{
  position:relative;
  margin:0;
  max-width:18em;
  color:#c9dfd6;
  font-size:13px;
  line-height:1.55;
}
.login-form{margin-top:4px!important;gap:14px!important}
.login-form label{font-size:12px}
.save-options{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-top:2px;
}
.save-chip{
  display:flex!important;
  align-items:center;
  justify-content:center;
  gap:6px!important;
  min-height:42px;
  margin:0!important;
  padding:8px 6px;
  border:1px solid #d7ddd4;
  border-radius:12px;
  background:#f7f8f4;
  font-size:11px!important;
  font-weight:700;
  color:#31463c;
  cursor:pointer;
  user-select:none;
}
.save-chip input{
  width:15px!important;
  height:15px;
  accent-color:#174b3a;
  flex:none;
}
.save-chip:has(input:checked){
  border-color:#174b3a;
  background:#e8f3ea;
  color:#174b3a;
}
.login-submit{
  margin-top:6px;
  justify-content:center!important;
  min-height:52px;
  font-size:16px;
}
.login-submit span{display:none}
.login-footer{
  margin-top:auto;
  padding-top:22px;
  padding-bottom:calc(18px + env(safe-area-inset-bottom));
}
.login-footer .auth-link{margin:0;padding-top:8px;border-top:1px solid #e5e8e2}

@media(max-width:760px){
  .login-page{padding:0;background:#f4f6f1}
  .login-shell,.login-shell.compact{
    display:block;
    min-height:100vh;
    min-height:100dvh;
    border-radius:0;
    background:#f4f6f1;
    box-shadow:none;
  }
  .login-shell > .brand-panel{display:none}
  .login-card{
    min-height:100vh;
    min-height:100dvh;
    padding:0 0 0;
    justify-content:stretch;
    background:#f4f6f1;
  }
  .login-card .login-hero{margin-bottom:10px}
  .login-card .form-stack,
  .login-card .alert{
    margin-left:22px;
    margin-right:22px;
  }
  .login-card .login-footer{
    margin-left:22px;
    margin-right:22px;
  }
  .login-card .alert{margin-top:4px}
}

@media(min-width:761px){
  .login-hero{display:none}
  .login-card .mobile-logo{display:none}
}


.section-head-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.section-head-actions .why-btn.is-loading{opacity:.55}

html.nav-leaving body::before{
  content:'이동 중…';
  position:fixed;left:50%;top:42%;transform:translate(-50%,-50%);
  z-index:10050;padding:12px 18px;border-radius:999px;
  background:rgba(26,46,38,.88);color:#e8f6ea;font-size:13px;font-weight:700;
  pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.18)
}
html.nav-leaving body::after{
  content:'';position:fixed;inset:0;z-index:10040;
  background:rgba(247,246,241,.45);pointer-events:none
}

.meal-strip{display:none}
.meal-results{margin:0 0 16px;padding:14px 15px;border-radius:18px;background:#fff;border:1px solid #e2e7df}
.meal-results.is-hidden,.meal-results[hidden]{display:none}
.meal-results .mode-label{margin:0 0 6px;font-weight:700}
.meal-reason{margin:0 0 10px;font-size:13px;line-height:1.45}
.meal-reason.is-hidden,.meal-reason[hidden]{display:none}
.meal-places{display:grid;gap:10px;margin-top:8px}
.meal-card{padding:14px 14px 12px;margin:0}
.meal-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.meal-meta{font-size:11px;color:#6b776f;font-weight:600;text-align:right}
.meal-empty{margin:4px 0 0;font-size:13px}
.meal-card h3{font-size:17px;margin:0 0 6px}
.meal-card .card-desc{font-size:13px;margin:0 0 8px}
.meal-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}
.boot-loading{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:rgba(247,246,241,.92);backdrop-filter:blur(6px);transition:opacity .28s ease,visibility .28s ease}
.boot-loading.is-done{opacity:0;visibility:hidden;pointer-events:none}
.boot-loading-card{width:min(320px,86vw);padding:28px 22px 24px;border-radius:22px;background:#fff;border:1px solid #e2e7df;box-shadow:0 18px 40px rgba(23,75,58,.1);text-align:center}
.boot-loading-bar{height:4px;border-radius:999px;background:#e8ece8;overflow:hidden;margin:0 auto 16px}
.boot-loading-bar i{display:block;height:100%;width:42%;border-radius:inherit;background:linear-gradient(90deg,#174b3a,#7db88a);animation:boot-slide 1.1s ease-in-out infinite}
.boot-loading-title{margin:0 0 6px;font-size:16px;font-weight:800;color:#174b3a;letter-spacing:-.02em}
.boot-loading-sub{margin:0;font-size:13px}
@keyframes boot-slide{0%{transform:translateX(-120%)}100%{transform:translateX(280%)}}

/* Welcome identity check after login */
.welcome-page{background:#e7eee6}
.welcome-shell{min-height:auto}
.welcome-card{padding:28px 24px 32px;display:flex;flex-direction:column;gap:0}
.welcome-hero{margin:0 0 18px;padding:26px 20px 22px;border-radius:24px;background:linear-gradient(155deg,#123529 0%,#174b3a 52%,#1f5f4a 100%);color:#eef6e8;position:relative;overflow:hidden}
.welcome-hero .eyebrow{margin:10px 0 0;color:#c7f36b;font-size:11px;font-weight:800;letter-spacing:.08em}
.welcome-hero h1{margin:8px 0 10px;font-size:28px;line-height:1.25;letter-spacing:-.04em}
.welcome-hero p:last-child{margin:0;font-size:13px;line-height:1.5;color:#c9dfd6}
.welcome-orb{position:absolute;right:16px;top:16px;width:48px;height:48px;border-radius:16px;background:rgba(199,243,107,.2);display:grid;place-items:center}
.welcome-orb span{width:18px;height:18px;border-radius:50%;background:#c7f36b;box-shadow:0 0 0 6px rgba(199,243,107,.18)}
.welcome-meta{margin:0 0 12px;font-size:12px}
.welcome-summary{margin:0 0 16px;padding:14px 16px;border-radius:16px;background:#fff;border:1px solid #e2e7df}
.welcome-summary-label{margin:0 0 8px;font-size:11px;font-weight:800;letter-spacing:.06em;color:#6b776f}
.welcome-summary ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.welcome-summary li{display:flex;justify-content:space-between;gap:12px;align-items:baseline;font-size:13px}
.welcome-summary li span{color:#6b776f;font-weight:600;flex-shrink:0}
.welcome-summary li b{text-align:right;color:#173b30;font-weight:700}
.welcome-form{margin:0 0 14px}
.welcome-form .btn{width:100%;margin-top:4px}
.welcome-restart{margin:0;text-align:center}
.welcome-restart .btn{width:100%}
.welcome-restart-hint{margin:8px 4px 0;font-size:11px;line-height:1.45}
.welcome-logout{margin:18px 0 0;text-align:center}
.btn.ghost{background:transparent;border:1px solid #d7ddd4;color:#174b3a;font-weight:700}
.btn.ghost:hover{border-color:#174b3a;background:#eef3ea}
@media(max-width:760px){
  .welcome-page{padding:0;background:#fafaf7}
  .welcome-shell{min-height:100vh;border-radius:0}
  .welcome-card{min-height:100vh;padding:18px 20px 28px}
  .welcome-hero h1{font-size:30px}
}

/* 포인트 알리기 */
.tip-share-bar{margin:12px 0 0;padding:12px 14px;border-radius:16px;background:#eef4ea;border:1px solid #d7e3d0}
.tip-share-btn{width:100%;border:0;border-radius:14px;padding:12px 14px;background:#174b3a;color:#eef6e8;font-weight:800;font-size:14px}
.tip-share-hint{margin:8px 2px 0;font-size:11px;line-height:1.45}
.tip-form{display:grid;gap:12px;margin-top:12px}
.tip-cat-label{margin:0;font-size:12px;font-weight:800;color:#5f6d64}
.tip-cats{display:flex;flex-wrap:wrap;gap:8px}
.tip-cats button,.tip-visibility button{border:1px solid #d7ddd4;background:#fff;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:700;color:#174b3a}
.tip-cats button.selected,.tip-visibility button.selected{background:#174b3a;color:#eef6e8;border-color:#174b3a}
.tip-visibility{display:flex;flex-wrap:wrap;gap:8px}
.tip-vis-hint{margin:-4px 0 0;font-size:11px}
.route-map-groups{display:grid;gap:12px}
.route-map-group{display:grid;gap:6px}
.route-map-name{font-size:11px;font-weight:800;color:#174b3a}
.chat-route-apps{margin-top:8px}
.my-tip-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center}
.tip-photo-label{font-size:12px;font-weight:700;display:grid;gap:8px}
.tip-photo-btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:44px;border:1px dashed #b7c4b8;border-radius:14px;background:#f3f6f1;color:#173b30;font-size:13px;font-weight:700;cursor:pointer}
.tip-photo-btn:active{transform:scale(.98)}
.tip-photo-preview{display:flex;gap:8px;flex-wrap:wrap}
.tip-photo-preview img{width:72px;height:72px;object-fit:cover;border-radius:12px;border:1px solid #e2e7df}
.tip-thumbs{display:flex;gap:6px;margin:8px 0;flex-wrap:wrap}
.tip-thumbs img{width:56px;height:56px;object-fit:cover;border-radius:10px}
.tip-photos-grid{display:grid;gap:10px;margin-top:12px}
.tip-photos-grid img{width:100%;max-height:280px;object-fit:cover;border-radius:16px;border:1px solid #e2e7df}
.my-tips{display:grid;gap:10px}
.my-tip-card{padding:14px;background:#fff;border-radius:16px;border:1px solid #e2e7df}
.my-tip-head{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}
.my-tip-head b{font-size:14px;color:#173b30}
.tip-del-btn{margin-top:8px;width:100%;justify-content:center}
.action-card[data-rec-type="TIP"] .badge{background:#c7f36b;color:#123529}
.chat-tip-card{padding:12px 14px;border-radius:16px;background:#f3f7f0;border:1px solid #d7e3d0;margin:0 0 8px}
.chat-tip-card strong{display:block;font-size:14px;margin-bottom:4px}
.chat-tip-card .tip-meta{font-size:11px;color:#6b776f;margin:0 0 6px}
.chat-tip-thumbs{display:flex;gap:6px;margin:8px 0}
.chat-tip-thumbs img{width:64px;height:64px;object-fit:cover;border-radius:10px}
