:root{--color-primary: hsl(222 62% 34%);--color-primary-600: hsl(222 62% 40%);--color-primary-500: hsl(222 62% 46%);--color-primary-300: hsl(222 55% 66%);--color-primary-100: hsl(222 62% 93%);--color-primary-alpha-10: hsl(222 62% 46% / .1);--color-primary-alpha-25: hsl(222 62% 46% / .25);--color-accent: hsl(41 92% 46%);--color-accent-100: hsl(41 92% 95%);--color-accent-alpha-10: hsl(41 92% 46% / .1);--color-success: hsl(152 60% 32%);--color-success-100: hsl(152 55% 94%);--color-warning: hsl(38 92% 42%);--color-warning-100: hsl(43 96% 94%);--color-danger: hsl(4 68% 44%);--color-danger-100: hsl(4 80% 96%);--color-info: hsl(205 80% 38%);--color-info-100: hsl(205 80% 95%);--color-text: var(--gray-900);--color-text-secondary: var(--gray-600);--color-text-disabled: var(--gray-400);--color-surface: hsl(0 0% 100%);--color-surface-sunken: var(--gray-50);--color-border: var(--gray-200);--color-border-strong: var(--gray-300);--color-focus-ring: var(--color-primary-500);--color-focus-ring-alpha: var(--color-primary-alpha-25);--gray-50: hsl(220 33% 98%);--gray-100: hsl(220 26% 95%);--gray-200: hsl(220 20% 88%);--gray-300: hsl(220 15% 78%);--gray-400: hsl(220 12% 64%);--gray-500: hsl(220 10% 48%);--gray-600: hsl(220 12% 38%);--color-text-placeholder: var(--gray-500);--gray-700: hsl(220 14% 28%);--gray-800: hsl(220 18% 18%);--gray-900: hsl(220 22% 11%);--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--font-numeric: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-xs: .8125rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-3xl: 1.75rem;--text-display: 2.25rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.65;--font-variant-numeric-tabular: tabular-nums;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: 1rem;--radius-full: 9999px;--shadow-1: 0 1px 3px hsl(220 22% 11% / .08), 0 1px 2px hsl(220 22% 11% / .06);--shadow-2: 0 4px 12px hsl(220 22% 11% / .1), 0 2px 4px hsl(220 22% 11% / .06);--shadow-3: 0 12px 32px hsl(220 22% 11% / .16), 0 4px 8px hsl(220 22% 11% / .08);--dur-fast: .15s;--dur-base: .2s;--dur-slow: .25s;--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1)}@media(prefers-color-scheme:dark){:root{--color-primary: hsl(217 82% 66%);--color-primary-600: hsl(217 78% 60%);--color-primary-500: hsl(217 74% 55%);--color-primary-300: hsl(217 70% 72%);--color-primary-100: hsl(221 40% 18%);--color-primary-alpha-10: hsl(217 74% 55% / .14);--color-primary-alpha-25: hsl(217 74% 55% / .3);--color-accent: hsl(41 92% 56%);--color-accent-100: hsl(41 60% 16%);--color-success: hsl(152 55% 48%);--color-success-100: hsl(152 45% 14%);--color-warning: hsl(38 90% 56%);--color-warning-100: hsl(38 60% 16%);--color-danger: hsl(4 85% 62%);--color-danger-100: hsl(4 60% 16%);--color-info: hsl(205 85% 60%);--color-info-100: hsl(205 70% 15%);--gray-50: hsl(221 30% 12%);--gray-100: hsl(221 28% 16%);--gray-200: hsl(221 24% 22%);--gray-300: hsl(221 20% 30%);--gray-400: hsl(220 14% 44%);--gray-500: hsl(220 12% 56%);--gray-600: hsl(220 14% 68%);--gray-700: hsl(220 16% 78%);--gray-800: hsl(220 18% 88%);--gray-900: hsl(220 22% 96%);--color-surface: hsl(222 24% 12%);--color-surface-sunken: hsl(222 26% 9%);--shadow-1: 0 1px 3px hsl(0 0% 0% / .4), 0 1px 2px hsl(0 0% 0% / .3);--shadow-2: 0 4px 12px hsl(0 0% 0% / .45), 0 2px 4px hsl(0 0% 0% / .3);--shadow-3: 0 12px 32px hsl(0 0% 0% / .55), 0 4px 8px hsl(0 0% 0% / .35)}}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 1ms;--dur-base: 1ms;--dur-slow: 1ms;--ease-out: linear;--ease-out-back: linear}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--line-height-normal);color:var(--color-text);background:var(--color-surface-sunken)}.app-root{min-height:100vh;min-height:100dvh}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-1) var(--space-4);background:var(--color-surface);box-shadow:var(--shadow-1)}.app-title{margin:0;font-size:var(--text-lg);font-weight:var(--font-weight-semibold)}.app-tagline{margin:0;font-size:var(--text-sm);color:var(--color-text-secondary)}.app-main{display:flex;flex-direction:column;gap:var(--space-4);max-width:720px;margin:0 auto;padding:var(--space-4);padding-bottom:calc(72px + env(safe-area-inset-bottom))}.app-section{transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.app-section-title{margin:0 0 var(--space-2);font-size:var(--text-lg);font-weight:var(--font-weight-semibold)}.app-trust{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:var(--color-text-secondary)}.seo-content{max-width:720px;margin:0 auto;padding:0 var(--space-4) var(--space-8)}.seo-content .seo-title{font-size:var(--text-lg);margin:0 0 var(--space-2)}.seo-content .seo-intro{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0 0 var(--space-3)}.seo-content .faq-list{display:flex;flex-direction:column;gap:var(--space-2)}.seo-content .faq-item{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1);padding:var(--space-2) var(--space-3)}.seo-content .faq-item h2{margin:0;font-size:var(--text-base);font-weight:var(--font-weight-medium);cursor:pointer;min-height:44px;display:flex;align-items:center}.seo-content .faq-item p{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary);display:none}.seo-content .faq-item.is-open p{display:block}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.metric-card{margin:0;padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-2)}.metric-card[data-tone=success] .metric-value{color:var(--color-success)}.metric-card[data-tone=warning] .metric-value{color:var(--color-warning)}.metric-card[data-tone=danger] .metric-value{color:var(--color-danger)}.metric-card[data-tone=info] .metric-value{color:var(--color-info)}.metric-value{margin:0;font-size:var(--text-display);font-weight:var(--font-weight-bold);font-variant-numeric:var(--font-variant-numeric-tabular);line-height:var(--line-height-tight)}.metric-label{margin:var(--space-1) 0 0;font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.metric-hint{margin:var(--space-1) 0 0;font-size:var(--text-xs);color:var(--color-text-secondary)}.calendar{display:flex;flex-direction:column;gap:var(--space-4)}.cal-expand{align-self:flex-start;min-height:44px;padding:0 var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-primary);font:inherit;font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.cal-month{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);padding:var(--space-3)}.cal-month-title{margin:0 0 var(--space-2);font-size:var(--text-base);font-weight:var(--font-weight-semibold)}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;touch-action:manipulation}.cal-weekday{text-align:center;font-size:var(--text-xs);color:var(--color-text-secondary);padding:var(--space-1) 0}.cal-day{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;gap:2px;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;font:inherit;font-size:var(--text-xs);font-variant-numeric:var(--font-variant-numeric-tabular);color:var(--color-text);touch-action:manipulation;transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.cal-day--blank{visibility:hidden;pointer-events:none}.cal-day.is-stay{background:var(--color-success-100)}.cal-day.is-stay .cal-day-icon{color:var(--color-success)}.cal-day.is-violation{background:var(--color-danger-100)}.cal-day.is-violation .cal-day-icon{color:var(--color-danger)}.cal-day.is-whatif-entry{background:var(--color-warning-100)}.cal-day.is-whatif-entry .cal-day-icon{color:var(--color-warning)}.cal-day.is-whatif-leave{background:var(--color-accent-100)}.cal-day.is-whatif-leave .cal-day-icon{color:var(--color-accent)}.cal-day.is-today{border-color:var(--color-primary)}.cal-day.is-whatif-range{background:var(--color-primary-alpha-10)}.cal-day-explain{margin:var(--space-2) 0 0;padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1);font-size:var(--text-sm);opacity:0}.cal-day-explain.is-visible{opacity:1;transition:opacity var(--dur-base) var(--ease-out)}.trip-editor{display:flex;flex-direction:column;gap:var(--space-3)}.trip-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.trip-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.trip-dates{font-variant-numeric:var(--font-variant-numeric-tabular)}.trip-delete,.trip-edit{min-width:44px;min-height:44px;border:none;border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.trip-delete{background:var(--color-danger-100);color:var(--color-danger)}.trip-edit{background:var(--color-primary-100);color:var(--color-primary)}.trip-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1)}.trip-form label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-text-secondary)}.trip-input{min-height:44px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-base);padding:0 var(--space-2)}.trip-add{min-height:44px;padding:0 var(--space-4);border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font:inherit;font-size:var(--text-base);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.trip-form-error{margin:0;flex-basis:100%;color:var(--color-danger);font-size:var(--text-sm)}.trip-success{margin:0;flex-basis:100%;color:var(--color-success);font-size:var(--text-sm);opacity:0}.trip-success.is-visible{opacity:1;transition:opacity var(--dur-base) var(--ease-out)}.trip-empty{padding:var(--space-3);color:var(--color-text-secondary);font-size:var(--text-sm)}.trip-example-btn{min-height:44px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-primary);font:inherit;font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.trip-undo-toast{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--gray-900);color:var(--gray-50);border-radius:var(--radius-md);font-size:var(--text-sm);opacity:0}.trip-undo-toast.is-visible{opacity:1;transition:opacity var(--dur-base) var(--ease-out)}.trip-undo-btn{min-height:44px;padding:0 var(--space-3);border:none;border-radius:var(--radius-md);background:var(--color-accent);color:var(--gray-900);font:inherit;font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease-out)}.whatif-toggle{align-self:flex-start;min-height:44px;padding:0 var(--space-4);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-primary);font:inherit;font-size:var(--text-base);font-weight:var(--font-weight-medium);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.whatif-panel{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-1)}.whatif-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-2)}.whatif-form label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-text-secondary)}.whatif-input{min-height:44px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-base);padding:0 var(--space-2)}.whatif-input--days{max-width:96px}.whatif-check{min-height:44px;padding:0 var(--space-4);border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font:inherit;font-size:var(--text-base);transition:transform var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}.whatif-result{margin:0;flex-basis:100%;font-size:var(--text-sm)}.whatif-result[data-tone=success]{color:var(--color-success)}.whatif-result[data-tone=warning]{color:var(--color-warning)}.whatif-result[data-tone=danger]{color:var(--color-danger)}.app-tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;background:var(--color-surface);box-shadow:var(--shadow-1)}.app-tab{flex:1;min-height:56px;border:none;background:transparent;color:var(--color-text-secondary);font:inherit;font-size:var(--text-base);display:flex;align-items:center;justify-content:center;transition:background-color var(--dur-fast) var(--ease-out)}.app-tab.is-active{color:var(--color-primary);font-weight:var(--font-weight-semibold);background:var(--color-primary-100)}.app-section--editor,.app-section--metrics,.app-section--whatif,.app-section--calendar{display:none}.app-section.is-active-tab{display:block}.cal-legend{display:flex;flex-wrap:wrap;gap:var(--space-2);font-size:var(--text-xs)}.cal-legend-item{padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--gray-100)}.cal-legend-item.is-stay{background:var(--color-success-100)}.cal-legend-item.is-violation{background:var(--color-danger-100)}.cal-legend-item.is-whatif-entry{background:var(--color-warning-100)}.cal-legend-item.is-whatif-leave{background:var(--color-accent-100)}.cal-hint{margin:0;font-size:var(--text-xs);color:var(--color-text-secondary)}@media(min-width:768px){.app-main{max-width:720px}.app-section--editor,.app-section--metrics,.app-section--whatif,.app-section--calendar{display:block}.app-tabbar{display:none}.app-main{padding-bottom:var(--space-8)}}@media(min-width:1024px){.app-header{min-height:64px;justify-content:space-between}.app-main{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--space-8);max-width:1200px;align-items:start}.app-right-col{grid-column:2;grid-row:1 / span 3;align-self:stretch;display:flex;flex-direction:column;gap:var(--space-4)}.app-section--metrics,.app-section--whatif{position:sticky;top:80px}.app-section--calendar{grid-column:1 / -1;grid-row:2}.app-trust{grid-column:1 / -1;grid-row:3}.cal-day{min-width:32px;min-height:32px}}@media(hover:hover)and (pointer:fine){.trip-add:hover,.whatif-check:hover,.app-tab:hover,.whatif-toggle:hover{transform:scale(.98)}.trip-delete:hover,.trip-edit:hover,.cal-expand:hover{transform:scale(1.04)}.cal-day:not(.cal-day--blank):hover{transform:scale(1.04);background-color:var(--color-primary-alpha-10)}}.trip-add:active,.whatif-check:active,.cal-day:not(.cal-day--blank):active{transform:scale(.98)}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}
