:root{--app-height: 100vh;--font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-control: 8px;--radius-modal: 14px;--header-pad-x: 16px;--header-pad-y: 12px;--transition-theme: background-color .12s ease, color .12s ease, border-color .12s ease}@supports (height: 100lvh){:root{--app-height: 100lvh}}[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #f5f5f7;--bg-elevated: #ffffff;--text-primary: #1a1a1a;--text-secondary: #6e6e73;--text-disabled: #aeaeb2;--accent-primary: #5b7fff;--accent-secondary: #3f5fd9;--danger: #c4271f;--border-subtle: #e5e5e7;--border-strong: #c7c7cc;--shadow-modal: 0 12px 40px rgba(0, 0, 0, .16);--shadow-toast: 0 6px 24px rgba(0, 0, 0, .18);--grid-line: #e5e5e7;--grid-line-strong: #d1d1d6;--today-marker: #5b7fff;--today-marker-text: #ffffff;--weekend-tint: #fafafa;--other-month-tint: #f5f5f7;--event-chip-bg: rgba(91, 127, 255, .12);--event-chip-stripe: #5b7fff;--event-chip-text: #1a1a1a;--event-all-day-bg: rgba(91, 127, 255, .2);--event-all-day-text: #1a1a1a;--event-chip-radius: 6px;--font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif}@media(prefers-contrast:more){[data-theme=light]{--text-primary: #000000;--text-secondary: #3a3a3c;--text-disabled: #6e6e73;--border-subtle: #8e8e93;--border-strong: #000000;--grid-line: #a0a0a8;--grid-line-strong: #000000;--event-chip-bg: rgba(63, 95, 217, .22);--event-chip-text: #000000}}[data-theme=dark]{--bg-primary: #1c1c1e;--bg-secondary: #2c2c2e;--bg-elevated: #2c2c2e;--text-primary: #f2f2f7;--text-secondary: #98989f;--text-disabled: #48484a;--accent-primary: #5b7fff;--accent-secondary: #8aa4ff;--danger: #ff7b72;--border-subtle: #2c2c2e;--border-strong: #3a3a3c;--shadow-modal: 0 12px 40px rgba(0, 0, 0, .6);--shadow-toast: 0 6px 24px rgba(0, 0, 0, .7);--grid-line: #2c2c2e;--grid-line-strong: #3a3a3c;--today-marker: #5b7fff;--today-marker-text: #ffffff;--weekend-tint: rgba(255, 255, 255, .02);--other-month-tint: #18181a;--event-chip-bg: rgba(91, 127, 255, .25);--event-chip-stripe: #5b7fff;--event-chip-text: #f2f2f7;--event-all-day-bg: rgba(91, 127, 255, .35);--event-all-day-text: #f2f2f7;--event-chip-radius: 6px;--font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif}@media(prefers-contrast:more){[data-theme=dark]{--text-primary: #ffffff;--text-secondary: #d1d1d6;--text-disabled: #8e8e93;--border-subtle: #636366;--border-strong: #aeaeb2;--grid-line: #636366;--grid-line-strong: #aeaeb2;--event-chip-bg: rgba(138, 164, 255, .35);--event-chip-text: #ffffff}}[data-theme=apple]{--bg-primary: #fbfbfd;--bg-secondary: #f2f2f7;--bg-elevated: #ffffff;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-disabled: #aeaeb2;--accent-primary: #ff3b30;--accent-secondary: #d70015;--danger: #d70015;--border-subtle: #e5e5e7;--border-strong: #d1d1d6;--shadow-modal: 0 12px 40px rgba(0, 0, 0, .14);--shadow-toast: 0 6px 24px rgba(0, 0, 0, .16);--grid-line: #e5e5e7;--grid-line-strong: #d1d1d6;--today-marker: #ff3b30;--today-marker-text: #ffffff;--weekend-tint: #f7f7f9;--other-month-tint: #f2f2f7;--event-chip-bg: #ffffff;--event-chip-stripe: #ff3b30;--event-chip-text: #1d1d1f;--event-all-day-bg: #ffffff;--event-all-day-text: #1d1d1f;--event-chip-radius: 14px;--font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", system-ui, sans-serif;--font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif}@media(prefers-contrast:more){[data-theme=apple]{--text-primary: #000000;--text-secondary: #3a3a3c;--text-disabled: #6e6e73;--border-subtle: #8e8e93;--border-strong: #000000;--grid-line: #a0a0a8;--grid-line-strong: #000000;--event-chip-bg: #ffffff;--event-chip-text: #000000}}[data-theme=google]{--bg-primary: #ffffff;--bg-secondary: #f1f3f4;--bg-elevated: #ffffff;--text-primary: #3c4043;--text-secondary: #5f6368;--text-disabled: #9aa0a6;--accent-primary: #1a73e8;--accent-secondary: #174ea6;--danger: #c5221f;--border-subtle: #dadce0;--border-strong: #bdc1c6;--shadow-modal: 0 12px 40px rgba(60, 64, 67, .2);--shadow-toast: 0 6px 24px rgba(60, 64, 67, .24);--grid-line: #dadce0;--grid-line-strong: #bdc1c6;--today-marker: #1a73e8;--today-marker-text: #ffffff;--weekend-tint: #f8f9fa;--other-month-tint: #f1f3f4;--event-chip-bg: #1a73e8;--event-chip-stripe: #1a73e8;--event-chip-text: #ffffff;--event-all-day-bg: #1a73e8;--event-all-day-text: #ffffff;--event-chip-radius: 4px;--font-body: Roboto, "Helvetica Neue", Arial, system-ui, sans-serif;--font-heading: Roboto, "Helvetica Neue", Arial, system-ui, sans-serif}@media(prefers-contrast:more){[data-theme=google]{--text-primary: #202124;--text-secondary: #3c4043;--text-disabled: #5f6368;--border-subtle: #9aa0a6;--border-strong: #202124;--grid-line: #9aa0a6;--grid-line-strong: #202124;--event-chip-bg: #174ea6;--event-chip-text: #ffffff}}*,*:before,*:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg-primary)}body{font-family:var(--font-body);color:var(--text-primary);background:var(--bg-primary);transition:var(--transition-theme);-webkit-font-smoothing:antialiased}button,select,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{display:flex;flex-direction:column;height:var(--app-height);background:var(--bg-primary)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:calc(env(safe-area-inset-top) + var(--header-pad-y)) calc(env(safe-area-inset-right) + var(--header-pad-x)) var(--header-pad-y) calc(env(safe-area-inset-left) + var(--header-pad-x));border-bottom:1px solid var(--border-subtle);background:var(--bg-secondary)}.app-title{margin:0;font-family:var(--font-heading);font-size:1.375rem;font-weight:700;letter-spacing:-.01em;cursor:default;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.theme-control{display:flex;align-items:center;gap:var(--space-2);font-size:.875rem;color:var(--text-secondary)}.theme-control select{min-height:36px;padding:0 var(--space-2);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--bg-elevated);color:var(--text-primary)}.app-main{flex:1;min-height:0;overflow-y:auto;padding:var(--space-4) calc(env(safe-area-inset-right) + var(--header-pad-x)) calc(env(safe-area-inset-bottom) + var(--space-6)) calc(env(safe-area-inset-left) + var(--header-pad-x));-webkit-overflow-scrolling:touch}.boot-error{max-width:34rem;margin:var(--space-6) auto;padding:var(--space-5);border:1px solid var(--border-strong);border-radius:var(--radius-modal);background:var(--bg-elevated);box-shadow:var(--shadow-modal)}.boot-error h2{margin:0 0 var(--space-3);font-family:var(--font-heading);font-size:1.125rem}.boot-error p{margin:0;color:var(--text-secondary);line-height:1.5}.update-banner{position:fixed;right:calc(env(safe-area-inset-right) + var(--space-4));bottom:calc(env(safe-area-inset-bottom) + var(--space-4));left:calc(env(safe-area-inset-left) + var(--space-4));z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-modal);background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-toast);font-size:.9375rem}.update-banner[hidden]{display:none}.update-banner button{min-height:36px;padding:0 var(--space-3);border:0;border-radius:var(--radius-control);background:var(--accent-primary);color:var(--today-marker-text);font-weight:600}.app-version{position:fixed;right:calc(env(safe-area-inset-right) + 10px);bottom:calc(env(safe-area-inset-bottom) + 6px);z-index:4;color:var(--text-secondary);font-size:11px;font-variant-numeric:tabular-nums;opacity:.75;pointer-events:none}.debug-panel{position:fixed;right:calc(env(safe-area-inset-right) + var(--space-2));bottom:calc(env(safe-area-inset-bottom) + var(--space-2));left:calc(env(safe-area-inset-left) + var(--space-2));z-index:30;display:flex;flex-direction:column;max-height:50vh;border:1px solid var(--border-strong);border-radius:var(--radius-modal);background:var(--bg-elevated);box-shadow:var(--shadow-modal)}.debug-panel[hidden]{display:none}.debug-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle);font-size:.8125rem;font-weight:600}.debug-head button,.debug-actions button{min-height:32px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary);font-size:.8125rem}.debug-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:1px solid var(--border-subtle)}.debug-list{margin:0;padding:var(--space-2) var(--space-3);overflow-y:auto;min-height:0;list-style:none;font-family:var(--font-mono);font-size:11px;line-height:1.5;color:var(--text-secondary);-webkit-overflow-scrolling:touch}.debug-list li{padding:3px 0;border-bottom:1px solid var(--border-subtle);white-space:pre-wrap;overflow-wrap:anywhere}.debug-list li[data-level=warn]{color:var(--text-primary)}.debug-list li[data-level=error]{color:var(--accent-primary);font-weight:700}@media(min-width:768px){.app-main{padding-right:max(calc(env(safe-area-inset-right) + var(--space-6)),10vw);padding-left:max(calc(env(safe-area-inset-left) + var(--space-6)),10vw)}}.month-view{display:flex;flex-direction:column;height:100%}.month-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.month-title{flex:1;margin:0;font-family:var(--font-heading);font-size:1.25rem;font-weight:700;text-align:center}.month-nav,.month-today{min-height:36px;border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--bg-elevated);color:var(--text-primary)}.month-nav{width:36px;padding:0;font-size:1.375rem;line-height:1}.month-today{padding:0 var(--space-3);font-size:.8125rem}.month-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-bottom:var(--space-1);color:var(--text-secondary);font-size:.6875rem;letter-spacing:.04em;text-align:center;text-transform:uppercase}.month-grid{flex:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(72px,1fr);border-top:1px solid var(--grid-line-strong);border-left:1px solid var(--grid-line-strong);border-radius:2px;overflow:hidden}.month-cell{display:flex;flex-direction:column;gap:2px;min-height:0;padding:var(--space-1);overflow:hidden;border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);background:var(--bg-primary);cursor:pointer}.month-cell.is-weekend{background:var(--weekend-tint)}.month-cell.is-other-month{background:var(--other-month-tint)}.month-cell.is-today{box-shadow:inset 0 0 0 1px var(--today-marker)}.month-date{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;width:20px;height:20px;color:var(--text-secondary);font-size:.75rem;font-variant-numeric:tabular-nums}.month-cell.is-other-month .month-date{color:var(--text-disabled)}.month-date.is-today{border-radius:999px;background:var(--today-marker);color:var(--today-marker-text);font-weight:600}.month-chips{display:flex;flex-direction:column;gap:2px;min-height:0;overflow:hidden}.event-chip{display:flex;align-items:center;gap:3px;min-width:0;padding:1px 4px;overflow:hidden;border:0;border-radius:var(--event-chip-radius);background:var(--event-chip-bg);color:var(--event-chip-text);font:inherit;font-size:.625rem;line-height:1.3;text-align:left;white-space:nowrap}.event-chip:before{content:"";flex:none;align-self:stretch;width:3px;border-radius:2px;background:var(--chip-color, var(--event-chip-stripe))}@media(prefers-contrast:more){.event-chip:before{width:4px}}.event-chip-time{flex:none;color:var(--text-secondary)}.event-chip-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}@media(max-width:600px){.event-chip-time{display:none}}.month-more{align-self:flex-start;padding:0 2px;border:0;background:none;color:var(--text-secondary);font:inherit;font-size:.625rem}.event-panel{width:100%;max-width:34rem;max-height:88dvh;margin:auto auto 0;padding:0;overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--radius-modal) var(--radius-modal) 0 0;background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-modal)}.event-panel::backdrop{background:#00000073}body:has(.event-panel[open]) .app-main{overflow:hidden}.event-panel-head{display:flex;flex:none;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-subtle)}.event-panel-title{flex:1;margin:0;font-family:var(--font-heading);font-size:1rem;font-weight:600;text-align:center}.event-panel-spacer{flex:none;width:4.25rem}.event-panel button{min-height:40px;padding:0 var(--space-2);border:0;border-radius:var(--radius-control);background:none;color:var(--accent-primary);font-size:.9375rem}.event-panel button.event-primary{padding:0 var(--space-4);background:var(--accent-primary);color:var(--today-marker-text);font-weight:600}.event-panel button.event-danger{color:var(--danger)}.event-panel button.event-plain{color:var(--accent-primary)}.event-form,.event-detail,.event-day{display:flex;flex-direction:column;max-height:calc(88dvh - 2px);min-height:0}.event-panel-body{display:flex;flex-direction:column;gap:var(--space-3);min-height:0;padding:var(--space-4) var(--space-4) calc(env(safe-area-inset-bottom) + var(--space-4));overflow-y:auto;-webkit-overflow-scrolling:touch}.event-row{display:flex;align-items:center;gap:var(--space-2);min-width:0}.event-label{flex:0 0 4.5rem;color:var(--text-secondary);font-size:.8125rem}.event-input{flex:1;min-width:0;min-height:40px;padding:0 var(--space-2);border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary);font-size:.9375rem}textarea.event-input{padding:var(--space-2);line-height:1.4;resize:vertical}.event-time{flex:none;width:6.75rem}.event-check{display:flex;align-items:center;gap:var(--space-2);min-height:40px;font-size:.9375rem}.event-check input{width:20px;height:20px;accent-color:var(--accent-primary)}.event-error{margin:0;color:var(--danger);font-size:.875rem;font-weight:600}.event-detail-when,.event-detail-calendar,.event-detail-location,.event-detail-description,.event-day-empty{margin:0;padding:0 var(--space-4) var(--space-3);line-height:1.45;overflow-wrap:anywhere}.event-detail-when{padding-top:var(--space-4);font-weight:600}.event-detail-calendar{display:flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:.875rem}.event-detail-location{color:var(--text-secondary)}.event-detail-description{white-space:pre-wrap}.event-day-list{min-height:0;padding:0 var(--space-2);overflow-y:auto;-webkit-overflow-scrolling:touch}.event-day-row{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:44px;padding:0 var(--space-2);border:0;border-bottom:1px solid var(--border-subtle);border-radius:0;color:var(--text-primary);text-align:left}.event-day-time{flex:none;width:5.25rem;color:var(--text-secondary);font-size:.8125rem;font-variant-numeric:tabular-nums}.event-day-title{flex:1;min-width:0;overflow:hidden;font-size:.9375rem;text-overflow:ellipsis;white-space:nowrap}.event-dot{flex:none;width:8px;height:8px;border-radius:999px;background:var(--chip-color, var(--event-chip-stripe))}.event-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:auto;padding:var(--space-2) var(--space-4) calc(env(safe-area-inset-bottom) + var(--space-3));border-top:1px solid var(--border-subtle)}.event-day-empty{padding-top:var(--space-4);color:var(--text-secondary)}.event-day .event-actions{justify-content:stretch}.event-day .event-actions button{flex:1}@media(min-width:768px){.event-panel{margin:auto;border-radius:var(--radius-modal)}}
