/* /plan/ page layout. Tokens and .nyg-* components first; .nyg-planner-* only where nothing fits. */
:root { --nyg-header-h: 65px; } /* measured: sticky .nyg-header is 64.6px tall at 390px */
.nyg-planner { max-width: var(--nyg-max-narrow); margin: 0 auto; padding: var(--nyg-space-7) var(--nyg-page-pad-x-mobile) var(--nyg-space-9); display: grid; gap: var(--nyg-space-7); }
@media (min-width: 880px) { .nyg-planner { padding-left: var(--nyg-page-pad-x); padding-right: var(--nyg-page-pad-x); } }
.nyg-planner-form { background: var(--nyg-color-white); border: 1px solid var(--nyg-color-tint-2); border-radius: var(--nyg-radius-lg); padding: var(--nyg-space-6) var(--nyg-space-5); box-shadow: var(--nyg-shadow-1); display: grid; gap: var(--nyg-space-6); }
.nyg-planner-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.nyg-planner-form legend, .nyg-planner-label { font-family: var(--nyg-font-display); font-weight: var(--nyg-weight-extra); font-size: var(--nyg-text-xl); color: var(--nyg-color-ink); padding: 0; margin-bottom: var(--nyg-space-3); display: block; }
.nyg-planner-hint { font-size: var(--nyg-text-sm); color: var(--nyg-color-ink-5); margin: 0 0 var(--nyg-space-3); line-height: var(--nyg-leading-base); }
.nyg-planner-chips { display: flex; flex-wrap: wrap; gap: var(--nyg-space-2); }
.nyg-planner-chips .nyg-chip-rail__chip { min-height: 44px; }
.nyg-planner-chips .nyg-chip-rail__chip:focus-visible, .nyg-planner-input:focus-visible, .nyg-planner-form .nyg-btn:focus-visible, .nyg-planner-result a:focus-visible, .nyg-planner-result button:focus-visible, .nyg-planner-summary .nyg-btn:focus-visible { outline: 3px solid var(--nyg-color-brand); outline-offset: 2px; }
/* display rules above must never beat the [hidden] attribute */
.nyg-planner [hidden], .nyg-planner-result[hidden], .nyg-planner-summary[hidden], .nyg-planner-form[hidden] { display: none !important; }
.nyg-planner-sub { margin-top: var(--nyg-space-4); }
.nyg-planner-input { width: 100%; max-width: 420px; min-height: 44px; font: inherit; font-size: var(--nyg-text-md); color: var(--nyg-color-ink-3); background: var(--nyg-color-white); border: 1px solid var(--nyg-color-tint-2); border-radius: var(--nyg-radius-md); padding: var(--nyg-space-2) var(--nyg-space-3); }
textarea.nyg-planner-input { max-width: none; min-height: 88px; resize: vertical; }
.nyg-planner-row { display: flex; flex-wrap: wrap; gap: var(--nyg-space-3); align-items: center; }
.nyg-planner-count { font-size: var(--nyg-text-sm); color: var(--nyg-color-ink-5); margin-top: var(--nyg-space-1); }
.nyg-planner-error { color: var(--nyg-color-warn-text); background: var(--nyg-color-warn); border: 1px solid var(--nyg-color-warn-line); border-radius: var(--nyg-radius-md); padding: var(--nyg-space-3) var(--nyg-space-4); font-size: var(--nyg-text-md); }
.nyg-planner-submit { display: flex; flex-wrap: wrap; gap: var(--nyg-space-3); align-items: center; }
.nyg-planner-submit .nyg-btn { min-height: 48px; padding-left: var(--nyg-space-7); padding-right: var(--nyg-space-7); }
.nyg-planner-submit .nyg-btn[disabled] { opacity: .6; cursor: progress; }
.nyg-planner-status { font-size: var(--nyg-text-md); color: var(--nyg-color-ink-4); }
.nyg-planner-result { display: grid; gap: var(--nyg-space-6); }
.nyg-planner-result, .nyg-planner-result h2, .nyg-planner-form, .nyg-planner-summary { scroll-margin-top: calc(var(--nyg-header-h, 59px) + var(--nyg-space-4)); }
.nyg-planner-summary { display: flex; flex-wrap: wrap; gap: var(--nyg-space-3); align-items: center; justify-content: space-between; background: var(--nyg-color-white); border: 1px solid var(--nyg-color-tint-2); border-radius: var(--nyg-radius-lg); padding: var(--nyg-space-4) var(--nyg-space-5); box-shadow: var(--nyg-shadow-1); }
.nyg-planner-summary__text { margin: 0; flex: 1 1 14rem; font-size: var(--nyg-text-md); color: var(--nyg-color-ink-3); line-height: var(--nyg-leading-base); }
.nyg-planner-summary .nyg-btn { min-height: 44px; }
.nyg-planner-actions { display: flex; flex-wrap: wrap; gap: var(--nyg-space-3); align-items: center; margin-top: var(--nyg-space-3); }
.nyg-planner-actions .nyg-btn { min-height: 44px; }
.nyg-planner-result:focus { outline: none; }
.nyg-planner-result h2 { font-family: var(--nyg-font-display); font-weight: var(--nyg-weight-black); font-size: var(--nyg-text-3xl); letter-spacing: var(--nyg-tracking-snug); color: var(--nyg-color-ink); margin: 0; }
.nyg-planner-result h2:focus { outline: none; }
.nyg-planner-day { background: var(--nyg-color-white); border: 1px solid var(--nyg-color-tint-2); border-radius: var(--nyg-radius-lg); overflow: hidden; }
.nyg-planner-day > h3 { margin: 0; padding: var(--nyg-space-4) var(--nyg-space-5); background: var(--nyg-color-paper-2); border-bottom: 1px solid var(--nyg-color-line); font-family: var(--nyg-font-display); font-weight: var(--nyg-weight-black); font-size: var(--nyg-text-2xl); color: var(--nyg-color-ink); display: flex; flex-wrap: wrap; gap: var(--nyg-space-2); align-items: baseline; }
.nyg-planner-day > h3 span { font-family: var(--nyg-font-body); font-size: var(--nyg-text-md); font-weight: var(--nyg-weight-semi); color: var(--nyg-color-ink-5); }
.nyg-planner-stops { list-style: none; margin: 0; padding: 0; }
.nyg-planner-stop { padding: var(--nyg-space-5); display: grid; gap: var(--nyg-space-2); border-top: 1px solid var(--nyg-color-line-2); }
.nyg-planner-stop:first-child { border-top: 0; }
.nyg-planner-stop__block { font-size: var(--nyg-text-xs); letter-spacing: var(--nyg-tracking-eyebrow); text-transform: uppercase; font-weight: var(--nyg-weight-extra); color: var(--nyg-color-brand); }
.nyg-planner-stop__title { font-family: var(--nyg-font-display); font-weight: var(--nyg-weight-extra); font-size: var(--nyg-text-xl); line-height: var(--nyg-leading-snug); margin: 0; }
.nyg-planner-stop__title a { color: var(--nyg-color-ink); text-decoration: underline; text-decoration-color: var(--nyg-color-brand); text-underline-offset: 3px; }
.nyg-planner-stop__title a:hover { color: var(--nyg-color-brand); }
.nyg-planner-stop__why { margin: 0; font-size: var(--nyg-text-md); color: var(--nyg-color-ink-3); line-height: var(--nyg-leading-relax); }
.nyg-planner-stop__meta { display: flex; flex-wrap: wrap; gap: var(--nyg-space-2); align-items: center; font-size: var(--nyg-text-sm); color: var(--nyg-color-ink-5); }
.nyg-planner-stop__alt { font-size: var(--nyg-text-base); color: var(--nyg-color-ink-4); }
.nyg-planner-stop__alt a { color: var(--nyg-color-brand); text-decoration: underline; text-underline-offset: 3px; }
.nyg-planner-stop .nyg-btn { justify-self: start; min-height: 44px; }
.nyg-planner-note { font-size: var(--nyg-text-base); color: var(--nyg-color-ink-4); line-height: var(--nyg-leading-base); margin: 0; }
.nyg-planner-note a { color: var(--nyg-color-brand); text-decoration: underline; text-underline-offset: 2px; }
.nyg-planner-notice { background: var(--nyg-color-brand-tint); border: 1px solid var(--nyg-color-line); border-radius: var(--nyg-radius-md); padding: var(--nyg-space-3) var(--nyg-space-4); color: var(--nyg-color-ink-3); font-size: var(--nyg-text-md); margin: 0; }
.nyg-planner-feedback { display: grid; gap: var(--nyg-space-3); }
.nyg-planner-feedback .nyg-btn { min-height: 44px; }
.nyg-planner-feedback .nyg-chip-rail__chip { min-height: 44px; }
.nyg-planner-loading { display: flex; gap: var(--nyg-space-3); align-items: center; color: var(--nyg-color-ink-4); }
.nyg-planner-spinner { width: 20px; height: 20px; border: 3px solid var(--nyg-color-tint-2); border-top-color: var(--nyg-color-brand); border-radius: var(--nyg-radius-circle); animation: nyg-planner-spin .8s linear infinite; }
@keyframes nyg-planner-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .nyg-planner-spinner { animation: none; } }
