:root{color-scheme:light;--bg:#f3f2ee;--panel:#ffffff;--text:#1f2933;--muted:#43515d;--line:#d2d9df;--line-strong:#bcc8d6;--line-subtle:rgba(82, 96, 109, 0.3);--accent:#ad1334;--accent-soft:#f2c5d0;--accent-soft-hover:#eaafbf;--accent-text:#460916;--accent-border:rgba(173, 19, 52, 0.58);--accent-border-strong:rgba(173, 19, 52, 0.78);--accent-ring:rgba(173, 19, 52, 0.23);--accent-inner-ring:rgba(173, 19, 52, 0.28);--surface-subtle:#f7f8fa;--surface-elevated:#ffffff;--surface-control:#ffffff;--surface-control-hover:#f7ecf0;--surface-overlay:rgba(255, 255, 255, 0.98);--surface-inverse:rgba(15, 23, 42, 0.9);--text-inverse:#f8fafc;--chip-neutral-border:rgba(31, 41, 51, 0.14);--timeline-bg:#fcfafb;--timeline-block-border:rgba(31, 41, 51, 0.16);--timeline-block-shadow:0 6px 16px rgba(15, 23, 42, 0.1);--timeline-block-shadow-hover:0 10px 20px rgba(15, 23, 42, 0.16);--timeline-block-shadow-drag:0 10px 24px rgba(15, 23, 42, 0.2);--drag-handle:rgba(15, 23, 42, 0.36);--drag-preview-border:rgba(15, 23, 42, 0.25);--drag-preview-bg:rgba(15, 23, 42, 0.9);--drag-preview-text:#f8fafc;--drag-preview-shadow:0 10px 18px rgba(15, 23, 42, 0.25);--preview-outline:#1f2933;--selection-text-shadow:rgba(255, 255, 255, 0.7);--now-line:#ff6a00;--now-line-text:#b54400;--form-label:#374151;--field-bg:#ffffff;--field-hover-border:#b7c3ce;--field-invalid-border:#dc2626;--field-invalid-bg:#fff7f7;--feedback-error-border:#fca5a5;--feedback-error-bg:#fff1f2;--feedback-error-text:#9f1239;--toast-shadow:0 10px 30px rgba(8, 14, 28, 0.2);--toast-success-bg:#dcffe9;--toast-success-border:#66e6a4;--toast-success-text:#11633f;--toast-error-bg:#ffe6eb;--toast-error-border:#ff9db1;--toast-error-text:#9a1237;--popover-bg:#ffffff;--popover-shadow:0 16px 36px rgba(8, 14, 28, 0.2);--emoji-picker-background:#ffffff;--modal-backdrop:rgba(10, 16, 30, 0.52);--detail-scrim:rgba(10, 16, 30, 0.42);--modal-card-border:rgba(31, 41, 51, 0.14);--modal-card-bg:rgba(255, 255, 255, 0.98);--modal-card-shadow:0 28px 56px rgba(8, 14, 28, 0.35);--modal-header-line:#e2e8f0;--danger-soft-border:#fecaca;--danger-soft-bg:#fff1f2;--danger-soft-text:#991b1b;--danger-soft-hover:#ffe4e6;--danger-outline:#dc2626;--degraded-header-bg:#5a0f16;--degraded-header-border:#7a1a23;--degraded-header-text:#ffffff;--degraded-button-bg:#7a1a23;--degraded-button-border:#a33a45;--degraded-button-hover-bg:#922631;--degraded-button-hover-border:#bc4a57;--shell-glow:rgba(173, 19, 52, 0.16);--shell-glow-mobile:rgba(173, 19, 52, 0.1);--mobile-panel-border:rgba(210, 217, 223, 0.7);--mobile-week-card-bg:#ffffff;--mobile-day-grid-line:#e2e8f0;--mobile-detail-header-bg:rgba(255, 255, 255, 0.98);--segment-hover-bg:#f9fafb;--segment-hover-border:#b7c3ce;--bullet-train-body-start:#ffffff;--bullet-train-body-mid:#eab8c8;--bullet-train-body-end:#cf829a;--bullet-train-nose-start:#fefefe;--bullet-train-nose-mid:#df9fb5;--bullet-train-nose-end:#c36284;--bullet-train-tail-start:#fff6f9;--bullet-train-tail-end:#d886a0;--bullet-train-stripe-start:#eb4c71;--bullet-train-stripe-mid:#9c0f38;--bullet-train-stripe-end:#f38fab;--bullet-train-window-start:rgba(76, 8, 29, 0.95);--bullet-train-window-end:rgba(167, 45, 86, 0.84);--bullet-train-carriage-start:#ffffff;--bullet-train-carriage-mid:#e8b5c6;--bullet-train-carriage-end:#cf869f;--bullet-train-shadow-inset:rgba(96, 10, 36, 0.3);--bullet-train-shadow-drop:rgba(74, 8, 29, 0.28);--bullet-train-carriage-shadow-inset:rgba(95, 10, 35, 0.28);--bullet-train-carriage-shadow-drop:rgba(75, 8, 29, 0.22);--chip-event:#ffd3bd;--chip-event-border:#e3916b;--chip-event-text:#4a1706;--chip-event-strong:#b84317;--chip-travel:#f1cddb;--chip-travel-border:#cf7f9c;--chip-travel-text:#431126;--chip-travel-strong:#980f40;--chip-lodging:#f5d4c3;--chip-lodging-border:#d29174;--chip-lodging-text:#4a1f0d;--chip-lodging-handle:#e3b39f;--select-strong:#f3b5c5;--select-line:#ac1337;--select-day-text:#3d0615;--select-shadow:rgba(125, 10, 34, 0.28);--flight-lane-bg-start:#f9dde6;--flight-lane-bg-end:#feecf2;--flight-chip-bg:#f0cbda;--flight-chip-border:rgba(152, 15, 64, 0.48);--flight-chip-text:#431126;--flight-chip-time:#6c0b2d;--bullet-lane-bg:#efbed0;--bullet-track:rgba(117, 14, 45, 0.56);--lodging-lane-bg-start:#f9dfd0;--lodging-lane-bg-end:#fdeee6;--detail-empty-bg:#f8dce5;--surface-hover:#f9edf1;--surface-muted:#f2dbe3;--mobile-week-bg:#fdeff4;--mobile-calendar-bg:#f7e6ed;--font-display:'Hiragino Sans','Hiragino Kaku Gothic ProN',-apple-system,BlinkMacSystemFont,sans-serif;--font-body:'Hiragino Sans','Hiragino Kaku Gothic ProN',-apple-system,BlinkMacSystemFont,sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--shadow-soft:0 12px 28px rgba(16, 24, 40, 0.08);--shadow-strong:0 20px 40px rgba(16, 24, 40, 0.16);--modal-max-width:576px;--emoji-size-multiplier:1.05;--app-shell-padding:20px;--app-shell-height:calc(100vh - (var(--app-shell-padding) * 2))}@supports (height:100dvh){:root{--app-shell-height:calc(100dvh - (var(--app-shell-padding) * 2))}}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#151316;--panel:#1d1a1f;--text:#f3edea;--muted:#c2b4b2;--line:#4c434d;--line-strong:#6b5c67;--line-subtle:rgba(194, 180, 178, 0.28);--accent:#e45576;--accent-soft:#54202e;--accent-soft-hover:#693140;--accent-text:#ffe5eb;--accent-border:rgba(228, 85, 118, 0.58);--accent-border-strong:rgba(228, 85, 118, 0.8);--accent-ring:rgba(228, 85, 118, 0.28);--accent-inner-ring:rgba(255, 212, 222, 0.2);--surface-subtle:#252129;--surface-elevated:#241f26;--surface-control:#2a2530;--surface-control-hover:#342d39;--surface-overlay:rgba(29, 26, 31, 0.96);--surface-inverse:rgba(9, 10, 14, 0.94);--text-inverse:#fdf8f6;--chip-neutral-border:rgba(243, 237, 234, 0.14);--timeline-bg:#18151a;--timeline-block-border:rgba(243, 237, 234, 0.16);--timeline-block-shadow:0 8px 18px rgba(0, 0, 0, 0.28);--timeline-block-shadow-hover:0 12px 24px rgba(0, 0, 0, 0.34);--timeline-block-shadow-drag:0 14px 28px rgba(0, 0, 0, 0.36);--drag-handle:rgba(243, 237, 234, 0.3);--drag-preview-border:rgba(243, 237, 234, 0.18);--drag-preview-bg:rgba(9, 10, 14, 0.94);--drag-preview-text:#fdf8f6;--drag-preview-shadow:0 10px 18px rgba(0, 0, 0, 0.35);--preview-outline:#f3edea;--selection-text-shadow:rgba(0, 0, 0, 0.35);--now-line:#ff9d42;--now-line-text:#ffbf86;--form-label:#e6ddda;--field-bg:#241f26;--field-hover-border:#746572;--field-invalid-border:#ff7b91;--field-invalid-bg:#3b2028;--feedback-error-border:#d86b84;--feedback-error-bg:#4b2230;--feedback-error-text:#ffd4dd;--toast-shadow:0 10px 30px rgba(0, 0, 0, 0.35);--toast-success-bg:#1d3c2d;--toast-success-border:#3fb879;--toast-success-text:#d8ffea;--toast-error-bg:#4d2230;--toast-error-border:#df7892;--toast-error-text:#ffdbe4;--popover-bg:#211d24;--popover-shadow:0 18px 40px rgba(0, 0, 0, 0.34);--emoji-picker-background:#211d24;--modal-backdrop:rgba(3, 4, 7, 0.66);--detail-scrim:rgba(3, 4, 7, 0.58);--modal-card-border:rgba(243, 237, 234, 0.16);--modal-card-bg:rgba(31, 27, 34, 0.97);--modal-card-shadow:0 28px 56px rgba(0, 0, 0, 0.48);--modal-header-line:#4c434d;--danger-soft-border:#d86b84;--danger-soft-bg:#4b2230;--danger-soft-text:#ffd8e0;--danger-soft-hover:#5d2a3a;--danger-outline:#ff8aa3;--degraded-header-bg:#45121b;--degraded-header-border:#8a3345;--degraded-header-text:#fff4f6;--degraded-button-bg:#5c1d2a;--degraded-button-border:#b05569;--degraded-button-hover-bg:#743041;--degraded-button-hover-border:#c86882;--shell-glow:rgba(228, 85, 118, 0.12);--shell-glow-mobile:rgba(228, 85, 118, 0.08);--mobile-panel-border:rgba(76, 67, 77, 0.8);--mobile-week-card-bg:#211d24;--mobile-day-grid-line:#4c434d;--mobile-detail-header-bg:rgba(31, 27, 34, 0.96);--segment-hover-bg:#312b34;--segment-hover-border:#6b5c67;--bullet-train-body-start:#d8c8d0;--bullet-train-body-mid:#9f5d74;--bullet-train-body-end:#6c3148;--bullet-train-nose-start:#d1c0c8;--bullet-train-nose-mid:#965870;--bullet-train-nose-end:#652d43;--bullet-train-tail-start:#e1d1d8;--bullet-train-tail-end:#8b5068;--bullet-train-stripe-start:#ff7b9e;--bullet-train-stripe-mid:#d42a59;--bullet-train-stripe-end:#ffb0c4;--bullet-train-window-start:rgba(31, 10, 19, 0.95);--bullet-train-window-end:rgba(122, 55, 82, 0.86);--bullet-train-carriage-start:#d8c8d0;--bullet-train-carriage-mid:#9a5c72;--bullet-train-carriage-end:#6b3348;--bullet-train-shadow-inset:rgba(46, 13, 24, 0.34);--bullet-train-shadow-drop:rgba(0, 0, 0, 0.32);--bullet-train-carriage-shadow-inset:rgba(42, 11, 22, 0.32);--bullet-train-carriage-shadow-drop:rgba(0, 0, 0, 0.28);--chip-event:#563326;--chip-event-border:#d48a64;--chip-event-text:#ffeadf;--chip-event-strong:#f1a37d;--chip-travel:#4d2b39;--chip-travel-border:#d27a9b;--chip-travel-text:#ffe4ef;--chip-travel-strong:#f098b8;--chip-lodging:#56382d;--chip-lodging-border:#cf906f;--chip-lodging-text:#ffe9df;--chip-lodging-handle:#7c5547;--select-strong:#4f2330;--select-line:#ef6f8e;--select-day-text:#ffe8ee;--select-shadow:rgba(239, 111, 142, 0.22);--flight-lane-bg-start:#412533;--flight-lane-bg-end:#31202b;--flight-chip-bg:#5a3142;--flight-chip-border:rgba(240, 152, 184, 0.56);--flight-chip-text:#ffe5ef;--flight-chip-time:#ffc4d5;--bullet-lane-bg:#4c2534;--bullet-track:rgba(240, 152, 184, 0.46);--lodging-lane-bg-start:#493127;--lodging-lane-bg-end:#32231d;--detail-empty-bg:#3d2430;--surface-hover:#2c2730;--surface-muted:#2a232b;--mobile-week-bg:#231d24;--mobile-calendar-bg:#1e191f;--shadow-soft:0 14px 32px rgba(0, 0, 0, 0.28);--shadow-strong:0 22px 44px rgba(0, 0, 0, 0.38)}}*{box-sizing:border-box}body,html{height:100%}html{font-size:106.25%}body{margin:0;font-family:var(--font-body);font-size:1rem;padding:var(--app-shell-padding);position:relative;background:var(--bg);color:var(--text);overflow:hidden}.app-shell{display:flex;flex-direction:column;gap:var(--space-4);height:var(--app-shell-height);min-height:0}.app-header{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-soft)}.app-header-copy{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.app-header-status{margin:0;color:var(--muted);font-size:.82rem;line-height:1.35}.app-header-status.hidden{display:none}.app-header-degraded{background:var(--degraded-header-bg);border-color:var(--degraded-header-border)}.app-header-degraded .app-header-status,.app-header-degraded .app-title{color:var(--degraded-header-text)}.app-header-degraded .copy-ical-btn{background:var(--degraded-button-bg);border-color:var(--degraded-button-border);color:var(--degraded-header-text)}.app-title{margin:0;font-family:var(--font-body);font-size:1.45rem;font-weight:500;letter-spacing:.01em}.copy-ical-btn{border:1px solid var(--accent-border);border-radius:999px;background:var(--accent-soft);color:var(--accent-text);width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;line-height:1;cursor:pointer;transition:background-color 160ms,border-color 160ms,transform 160ms}.copy-ical-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.copy-ical-btn svg{flex:none}body::after{content:'';position:fixed;inset:0;background:radial-gradient(circle at 18% -10%,var(--shell-glow),transparent 45%);z-index:-1;pointer-events:none}.layout{display:grid;grid-template-columns:minmax(0,75fr) minmax(0,25fr);gap:var(--space-4);padding:0;flex:1;min-height:0}.calendar-panel,.detail-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;min-height:0;box-shadow:var(--shadow-soft)}.calendar-panel{display:flex;flex-direction:column}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--line);background:var(--surface-subtle)}.weekdays div{text-align:center;padding:var(--space-3) 0;font-size:.84rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.calendar-grid{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;overflow:auto}.calendar-week-group{display:flex;flex-direction:column}.calendar-week-group+.calendar-week-group{border-top:1px solid var(--line)}.week-flight-lane{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-2);border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--flight-lane-bg-start) 0,var(--flight-lane-bg-end) 100%)}.week-flight-lane-bottom{padding:var(--space-2) var(--space-3) var(--space-3);border-top:1px solid var(--line);border-bottom:0}.week-flight-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--flight-chip-border);border-radius:999px;background:var(--flight-chip-bg);color:var(--flight-chip-text);font-size:calc(.85rem * var(--emoji-size-multiplier));padding:5px 10px;text-align:left;overflow:hidden;cursor:default}.week-flight-main,.week-flight-time{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.week-flight-time{font-size:.76rem;color:var(--flight-chip-time);opacity:.92}.bullet-train-lane{margin-top:auto;position:relative;min-height:86px;overflow:hidden;border-top:1px solid var(--line);background:var(--bullet-lane-bg)}.bullet-train-lane::after{content:'';position:absolute;left:0;right:0;pointer-events:none;bottom:16px;height:8px;background:var(--bullet-track)}.bullet-train-wrapper{position:absolute;--bullet-train-length:560px;left:calc(-1 * var(--bullet-train-length));bottom:16px;width:168px;height:40px;transform:none;opacity:0;animation:12.1s linear 10s infinite shinkansen-run}.bullet-train{position:relative;width:168px;height:40px;border-radius:20px 14px 12px 20px;background:linear-gradient(180deg,var(--bullet-train-body-start) 0,var(--bullet-train-body-mid) 55%,var(--bullet-train-body-end) 100%);box-shadow:inset 0 -3px 0 var(--bullet-train-shadow-inset),0 7px 16px var(--bullet-train-shadow-drop)}.bullet-train::before{content:'';position:absolute;right:-56px;top:0;width:66px;height:40px;border-radius:0 24px 22px 0;background:linear-gradient(180deg,var(--bullet-train-nose-start) 0,var(--bullet-train-nose-mid) 62%,var(--bullet-train-nose-end) 100%);clip-path:polygon(0 4%,80% 2%,100% 50%,80% 98%,0 96%,18% 50%)}.bullet-train::after{content:'';position:absolute;left:-13px;bottom:6px;width:15px;height:26px;border-radius:10px;background:linear-gradient(180deg,var(--bullet-train-tail-start) 0,var(--bullet-train-tail-end) 100%)}.bullet-train-stripe{position:absolute;left:6px;right:4px;top:22px;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--bullet-train-stripe-start) 0,var(--bullet-train-stripe-mid) 45%,var(--bullet-train-stripe-end) 100%)}.bullet-train-windows{position:absolute;left:18px;top:9px;display:flex;gap:5px}.bullet-train-window{width:10px;height:7px;border-radius:2px;background:linear-gradient(180deg,var(--bullet-train-window-start) 0,var(--bullet-train-window-end) 100%)}.bullet-train-cars{position:absolute;inset:0}.bullet-train-carriage{position:absolute;left:calc(-62px * var(--car-offset));top:6px;width:60px;height:30px;border-radius:14px 10px 10px 14px;background:linear-gradient(180deg,var(--bullet-train-carriage-start) 0,var(--bullet-train-carriage-mid) 58%,var(--bullet-train-carriage-end) 100%);box-shadow:inset 0 -3px 0 var(--bullet-train-carriage-shadow-inset),0 2px 4px var(--bullet-train-carriage-shadow-drop)}.bullet-train-carriage::before{content:'';position:absolute;left:8px;right:7px;top:8px;height:7px;border-radius:4px;background:repeating-linear-gradient(90deg,var(--bullet-train-window-start) 0,var(--bullet-train-window-start) 8px,var(--bullet-train-window-end) 8px,var(--bullet-train-window-end) 10px)}.bullet-train-carriage::after{content:'';position:absolute;left:6px;right:4px;top:19px;height:5px;border-radius:999px;background:linear-gradient(90deg,var(--bullet-train-stripe-start) 0,var(--bullet-train-stripe-mid) 45%,var(--bullet-train-stripe-end) 100%)}@keyframes shinkansen-run{0%{left:calc(-1 * var(--bullet-train-length));opacity:1}26%{left:calc(100% + var(--bullet-train-length));opacity:1}100%,26.01%{left:calc(100% + var(--bullet-train-length));opacity:0}}@media (prefers-reduced-motion:reduce){.bullet-train-wrapper{animation:none;left:8px;opacity:1}}.week-lodging-lane{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--lodging-lane-bg-start) 0,var(--lodging-lane-bg-end) 100%)}.week-lodging-span{border:1px solid var(--chip-lodging-border);border-radius:999px;background:var(--chip-lodging);color:var(--chip-lodging-text);font-size:calc(.86rem * var(--emoji-size-multiplier));padding:5px 10px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;transition:background-color 160ms,border-color 160ms}.week-days{display:grid;grid-template-columns:repeat(7,1fr)}.day-cell{position:relative;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:var(--space-3);min-height:116px;min-width:0;overflow:visible;display:flex;flex-direction:column;gap:var(--space-2);cursor:pointer;transition:background-color 160ms,box-shadow 160ms}.day-cell:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.day-cell.selected{background:var(--select-strong);box-shadow:inset 0 0 0 2px var(--select-shadow)}.day-cell.selected::after{content:'';position:absolute;inset:2px;border-radius:4px;outline:4px solid var(--select-line);pointer-events:none}.day-cell.selected .day-top>span:first-child{color:var(--select-day-text);text-shadow:0 1px 0 var(--selection-text-shadow)}.day-cell.selected .day-open-detail,.day-cell.selected .day-weather{color:var(--select-day-text)}.day-cell.padding{background:var(--surface-muted);cursor:default}.day-top{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;font-size:.98rem;font-weight:700}.day-top>span:first-child{flex:0 0 auto}.day-open-detail{display:none;border:1px solid var(--line);border-radius:999px;background:var(--surface-control);color:var(--muted);width:28px;height:28px;padding:0;line-height:1;font-size:.85rem;cursor:pointer}.day-weather{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:calc(.82rem * var(--emoji-size-multiplier));font-weight:500;color:var(--muted);white-space:nowrap}.chips{display:flex;flex-direction:column;gap:6px;min-width:0}.chip{display:block;min-width:0;max-width:100%;font-size:calc(.84rem * var(--emoji-size-multiplier));line-height:1.3;padding:6px 10px;border-radius:10px;border:1px solid var(--chip-neutral-border);white-space:normal;overflow:visible;overflow-wrap:anywhere;text-align:left;cursor:pointer;transition:transform 160ms,box-shadow 160ms,border-color 160ms}.chip-line{display:block}.chip-line+.chip-line{margin-top:2px}.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.chip-event{background:var(--chip-event);border-color:var(--chip-event-border);color:var(--chip-event-text)}.chip-travel{background:var(--chip-travel);border-color:var(--chip-travel-border);color:var(--chip-travel-text)}.chip-lodging{background:var(--chip-lodging);border-color:var(--chip-lodging-border);color:var(--chip-lodging-text)}.chip-event.tentative{background:color-mix(in srgb,var(--chip-event) 78%,var(--surface-elevated));border-style:dashed;border-color:color-mix(in srgb,var(--chip-event-strong) 74%,var(--text))}.chip-event.tentative .chip-line{opacity:1}.chip-lodging-handle{background:var(--chip-lodging-handle);border-style:dashed}.detail-panel{display:flex;flex-direction:column;padding:var(--space-3);min-height:0}.detail-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--line);margin-bottom:var(--space-3);background:var(--surface-subtle)}.detail-header-actions{display:flex;align-items:center;gap:8px}.detail-header h2{margin:0;font-family:var(--font-body);font-size:1.24rem;font-weight:600}.detail-title-group{display:flex;flex-direction:column;gap:3px}.detail-lodging-header{margin:0;font-size:.86rem;font-weight:600;color:var(--muted)}.detail-empty{margin-top:10px;border:1px dashed var(--line);border-radius:10px;background:var(--detail-empty-bg);padding:14px}.detail-empty.hidden{display:none}.detail-empty p{margin:0 0 10px;color:var(--muted)}.detail-empty-actions{display:flex;gap:8px}.detail-empty-actions[hidden]{display:none}.day-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;margin-top:auto}.day-summary-travel{display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;border-radius:999px;background:color-mix(in srgb,var(--chip-travel) 76%,var(--surface-elevated));border:1px solid color-mix(in srgb,var(--chip-travel-border) 88%,var(--text));font-size:1rem;line-height:1;flex:0 0 auto}.day-summary-events{display:inline-flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;min-width:0;margin-left:auto;gap:4px}.day-summary-event-emoji{display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;border-radius:999px;border:1px solid var(--line);background:var(--surface-control);color:var(--text);font-size:.95rem;line-height:1}.detail-empty-actions button{border:1px solid var(--line);border-radius:7px;background:var(--surface-control);color:var(--text);padding:8px 10px;font-size:.92rem;cursor:pointer}.timeline{position:relative;flex:1;min-height:0;overflow-y:auto;border-radius:10px;border:1px solid var(--line);padding-block:8px;background:var(--timeline-bg)}.timeline-content{position:relative;--time-gutter-width:58px;padding:8px 10px 16px}.time-slots{position:absolute;top:0;left:var(--time-gutter-width);right:0;bottom:0;pointer-events:none}.hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--line-strong)}.hour-line::before{content:attr(data-label);position:absolute;left:calc(-1 * var(--time-gutter-width));top:-8px;width:calc(var(--time-gutter-width) - 8px);text-align:right;font-size:.78rem;font-weight:700;letter-spacing:.03em;white-space:nowrap;color:var(--muted)}.timeline-block{position:absolute;width:calc((100% - var(--time-gutter-width))/ 2 - 2px);border-radius:10px;padding:8px 8px 12px;border:1px solid var(--timeline-block-border);overflow:hidden;box-shadow:var(--timeline-block-shadow);transition:box-shadow 140ms,border-color 140ms,transform 140ms}.timeline-block.events{background:var(--chip-event);border-left:1px solid var(--chip-event-strong)}.timeline-block.events.tentative{background:color-mix(in srgb,var(--chip-event) 82%,var(--surface-elevated));border-style:dashed;border-color:color-mix(in srgb,var(--chip-event-strong) 74%,var(--text));border-left-color:var(--chip-event-strong)}.timeline-block.events.tentative .timeline-block-content{opacity:1}.timeline-block.travel{background:var(--chip-travel);border-left:4px solid var(--chip-travel-strong)}.timeline-block-content{font-size:calc(.86rem * var(--emoji-size-multiplier));line-height:1.35;font-weight:600;cursor:grab}.timeline-block-content:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.timeline-block-readonly,.timeline-block-readonly .timeline-block-content{cursor:default}.timeline-block.pending{opacity:.7;border-style:dashed}.timeline-block.preview{opacity:1;border-style:solid;outline:4px dashed var(--preview-outline);outline-offset:4px;z-index:1}.timeline-block.pending .timeline-block-content::after{content:' Saving...';font-size:.72rem;color:var(--muted)}.quarter-line{position:absolute;left:0;right:0;border-top:1px dashed var(--line-subtle)}.now-line{position:absolute;left:var(--time-gutter-width);right:0;border-top:2px solid var(--now-line)}.now-line::before{content:'Now';position:absolute;left:-52px;top:-8px;width:44px;text-align:right;font-size:.8rem;color:var(--now-line-text);font-weight:600}.timeline-block.dragging{box-shadow:var(--timeline-block-shadow-drag);opacity:.9;z-index:3}.resize-handle{position:absolute;left:0;right:0;height:12px;cursor:ns-resize;opacity:0;pointer-events:none;transition:opacity 120ms}.timeline-block.dragging .resize-handle,.timeline-block:not(.timeline-block-readonly):focus-within .resize-handle{opacity:1;pointer-events:auto}.resize-handle-top{top:0}.resize-handle-bottom{bottom:0}.resize-handle::before{content:'';position:absolute;left:50%;transform:translateX(-50%);width:18px;height:4px;border-radius:999px;background:var(--drag-handle)}.resize-handle-top::before{top:3px}.resize-handle-bottom::before{bottom:3px}.timeline-drag-preview{position:fixed;z-index:999;pointer-events:none;border-radius:7px;padding:5px 8px;border:1px solid var(--drag-preview-border);background:var(--drag-preview-bg);color:var(--drag-preview-text);font-size:.76rem;font-weight:700;letter-spacing:.02em;box-shadow:var(--drag-preview-shadow)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.segment{border:1px solid var(--line);border-radius:8px;padding:9px;font-size:.95rem;font-weight:600;background:var(--surface-control);color:var(--text);cursor:pointer;transition:border-color 140ms,background-color 140ms,box-shadow 140ms}.segment:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.segment.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-inner-ring)}.item-form{--form-control-height:42px;--form-control-padding:10px;display:flex;flex-direction:column;gap:12px}.item-form-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:end}.item-form-row-main,.item-form-row-side{margin:0}.item-form-row-date-time-duration{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end}.item-form-row-date-time-duration label{margin:0;min-width:0}.item-form-row-date-time-duration input,.item-form-row-date-time-duration select{width:100%}.item-form-row-lodging-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}.item-form-row-lodging-dates label{margin:0;min-width:0}.item-form-row-lodging-dates input{width:100%}.item-form-row-travel-route{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end}.item-form-row-travel-route label{margin:0;min-width:0}.item-form-row-travel-route input{box-sizing:border-box;height:var(--form-control-height);min-height:var(--form-control-height);padding:var(--form-control-padding);width:100%}.item-form label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;color:var(--form-label);position:relative}.item-form-label-text{display:inline-flex;align-items:flex-start;gap:2px}.item-form-label-text sup{color:var(--accent);font-size:.85em;line-height:1}.item-form .item-form-toggle{display:flex;align-items:end}.item-form button,.item-form input,.item-form select,.item-form textarea{border:1px solid var(--line);border-radius:8px;padding:var(--form-control-padding);font-size:.95rem;font-family:inherit;background:var(--field-bg);color:var(--text);transition:border-color 140ms,box-shadow 140ms,background-color 140ms}.item-form button,.item-form input,.item-form select{min-height:var(--form-control-height)}.tentative-toggle-btn{width:var(--form-control-height);min-width:var(--form-control-height);height:var(--form-control-height);min-height:var(--form-control-height);padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;line-height:1}.item-form textarea{min-height:108px;resize:vertical}.item-form button:focus-visible,.item-form input:focus-visible,.item-form select:focus-visible,.item-form textarea:focus-visible{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.item-form input[aria-invalid=true],.item-form select[aria-invalid=true],.item-form textarea[aria-invalid=true]{border-color:var(--field-invalid-border);background:var(--field-invalid-bg)}.form-feedback{border-radius:8px;padding:9px 11px;font-size:.88rem;line-height:1.3}.form-feedback.error{border:1px solid var(--feedback-error-border);background:var(--feedback-error-bg);color:var(--feedback-error-text)}.form-feedback.hidden{display:none}.app-toast{position:fixed;right:18px;bottom:18px;z-index:30;border-radius:8px;padding:10px 12px;font-size:.94rem;border:1px solid transparent;box-shadow:var(--toast-shadow)}.app-toast.hidden{display:none}.app-toast.success{background:var(--toast-success-bg);border-color:var(--toast-success-border);color:var(--toast-success-text)}.app-toast.error{background:var(--toast-error-bg);border-color:var(--toast-error-border);color:var(--toast-error-text)}.emoji-picker-field{display:flex;flex-direction:column;gap:6px}.emoji-picker-field-compact{justify-content:end;gap:0}.emoji-picker-field label,.item-form-row-title-emoji .item-form-row-main,.item-form-row-title-emoji .item-form-row-side{font-size:.95rem;line-height:1.25}.item-form-row-title-emoji{grid-template-columns:auto minmax(0,1fr) auto;align-items:end}.item-form-row-travel-emoji{grid-template-columns:auto minmax(0,1fr);align-items:end}.item-form-row-title-emoji .item-form-row-main,.item-form-row-travel-emoji .item-form-row-main{min-width:0}.item-form-row-title-emoji .item-form-row-main input,.item-form-row-title-emoji .item-form-row-side .emoji-picker-trigger,.item-form-row-travel-emoji .item-form-row-side .emoji-picker-trigger{box-sizing:border-box;height:var(--form-control-height);min-height:var(--form-control-height)}.item-form-row-title-emoji .item-form-row-end.item-form-toggle{align-self:end;white-space:nowrap}.emoji-picker-trigger{width:100%;border:1px solid var(--line);border-radius:8px;background:var(--surface-control);color:var(--text);min-height:var(--form-control-height);padding:var(--form-control-padding);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.emoji-picker-trigger:focus-visible{border-color:var(--accent);outline:0}.emoji-picker-trigger-value{font-size:calc(.95rem * var(--emoji-size-multiplier));font-weight:600}.emoji-picker-field-compact .emoji-picker-trigger{width:var(--form-control-height);min-height:var(--form-control-height);padding:var(--form-control-padding);justify-content:center}.emoji-picker-field-compact .emoji-picker-trigger-value{font-size:calc(1.5rem * var(--emoji-size-multiplier));line-height:1}.emoji-picker-field-compact .emoji-picker-trigger-hint{display:none}.emoji-picker-trigger-hint{color:var(--muted);font-size:.8rem;font-weight:600}.emoji-popover-layer{position:fixed;inset:0;z-index:45;pointer-events:none}.emoji-picker-popover{position:fixed;width:min(340px,calc(100vw - 100px));max-height:calc(100vh - 32px);border:1px solid var(--line);border-radius:10px;background:var(--popover-bg);box-shadow:var(--popover-shadow);padding:10px;overflow:auto;pointer-events:auto}.day-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.emoji-picker-popover.hidden{display:none}.emoji-picker-library-host{display:none;min-height:250px}.emoji-picker-library{width:100%;--background:var(--emoji-picker-background);--border-size:1px;--border-color:var(--line);--button-hover-background:var(--accent-soft);--button-active-background:var(--accent-soft)}.emoji-picker-has-library .emoji-picker-library-host{display:block}.emoji-picker-fallback-title{margin:8.8px 0 6.6px;color:var(--muted);font-size:.86rem}.emoji-picker-has-library .emoji-picker-fallback-title{margin-top:11px}.emoji-picker-grid{display:grid;grid-template-columns:repeat(6,minmax(40px,1fr));gap:8px}.emoji-picker-option{border:1px solid var(--line);border-radius:7px;background:var(--surface-control);min-height:40px;font-size:calc(1.1rem * var(--emoji-size-multiplier))}.emoji-picker-option.selected,.emoji-picker-option:focus-visible{border-color:var(--accent);background:var(--accent-soft);outline:0}.day-items li{border:1px solid var(--line);border-radius:7px;padding:6px;display:flex;justify-content:space-between;gap:8px;font-size:.8rem}@media (max-width:560px){:root{--app-shell-padding:6px}body{font-size:.95rem}.app-shell{gap:6px}.app-header{padding:8px 10px}.app-title{font-size:1.2rem}.copy-ical-btn{width:36px;height:34px}.layout{gap:6px}.weekdays div{font-size:.68rem;padding:6px 0;letter-spacing:.05em}.day-cell{min-height:78px;padding:6px;gap:4px}.chip{min-height:32px;padding:7px 10px}.week-flight-chip,.week-lodging-span{min-height:30px;padding:6px 10px}.detail-header{padding:8px;margin-bottom:8px}.detail-header h2{font-size:1.08rem}.timeline-content{--time-gutter-width:52px;padding:8px 8px 14px}.timeline-block-content{font-size:calc(.82rem * var(--emoji-size-multiplier))}.item-form-row{grid-template-columns:48px minmax(0,1fr)}.item-form-row-date-time-duration{grid-template-columns:repeat(3,minmax(0,1fr))}.item-form-row-travel-emoji{align-items:start}.item-form-row-travel-emoji .item-form-row-side{align-self:start}.item-form-row-travel-route{grid-template-columns:minmax(0,1fr)}.modal-backdrop{padding:0;align-items:flex-end}.modal-card{width:100%;max-width:100%;max-height:90vh;border-radius:14px 14px 0 0;border-left:0;border-right:0;border-bottom:0;padding:14px 12px 16px}.modal-close-btn{top:8px;right:8px;transform:none}}.item-actions{display:flex;gap:4px}.weather-pill{font-size:.96rem;color:var(--muted)}.modal-backdrop{margin:0;border:0;width:100vw;max-width:none;height:100vh;max-height:none;position:fixed;inset:0;display:flex;align-items:flex-start;justify-content:center;background:var(--modal-backdrop);backdrop-filter:blur(2px);opacity:1;transition:opacity 220ms;z-index:20;padding:10vh 24px 24px}.modal-backdrop.modal-opening .modal-card{animation:480ms cubic-bezier(.16,1,.3,1) both item-modal-enter;transform-origin:50% 12%}.modal-backdrop.modal-closing{opacity:0;pointer-events:none}.modal-backdrop.modal-closing .modal-card{animation:460ms cubic-bezier(.2,0,.4,1) both item-modal-exit}.modal-backdrop.hidden{display:none}@keyframes item-modal-enter{0%{opacity:0;transform:translateY(26px) scale(.9)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes item-modal-exit{from{opacity:1;transform:translateY(0)}65%{opacity:1;transform:translateY(22px)}to{opacity:0;transform:translateY(34px)}}@media (prefers-reduced-motion:reduce){.modal-backdrop{transition:none}.modal-backdrop.modal-closing .modal-card,.modal-backdrop.modal-closing+.modal-close-btn,.modal-backdrop.modal-opening .modal-card,.modal-backdrop.modal-opening+.modal-close-btn{animation:none}}.detail-modal-scrim{display:none}.detail-modal-scrim.open{display:block;position:fixed;inset:0;background:var(--detail-scrim);backdrop-filter:blur(1px);z-index:17}.modal-card{position:relative;width:min(var(--modal-max-width),100%);max-width:var(--modal-max-width);max-height:calc(100vh - 48px);overflow:auto;border-radius:14px;border:1px solid var(--modal-card-border);background:var(--modal-card-bg);box-shadow:var(--modal-card-shadow);padding:16px;display:flex;flex-direction:column;gap:14px}.modal-card .item-form,.modal-card .segmented{width:100%}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--modal-header-line)}.modal-header h3{margin:0;font-size:1.2rem;font-weight:700}.modal-header-actions{display:inline-flex;align-items:center;gap:8px}.delete-icon-btn{border:1px solid var(--danger-soft-border);border-radius:8px;background:var(--danger-soft-bg);color:var(--danger-soft-text);width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1rem;line-height:1;cursor:pointer}.delete-icon-btn svg{display:block;width:18px;height:18px}.delete-icon-btn.hidden{display:none}.delete-icon-btn:focus-visible{outline:2px solid var(--danger-outline);outline-offset:2px}.close-icon-btn{border:1px solid var(--line);border-radius:8px;background:var(--surface-control);color:var(--text);width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1.35rem;line-height:1;cursor:pointer}.modal-close-btn{position:fixed;top:10vh;right:max(8px,calc((100vw - min(var(--modal-max-width),calc(100vw - 48px)))/ 2 - 48px));opacity:1;transform:translateY(-50%);z-index:21}.modal-backdrop.modal-opening+.modal-close-btn{pointer-events:none;animation:.1s ease-in-out 220ms both item-modal-close-btn-enter}.modal-backdrop.modal-closing+.modal-close-btn{pointer-events:none;display:none}.modal-backdrop.hidden+.modal-close-btn{display:none}@keyframes item-modal-close-btn-enter{from{opacity:0}to{opacity:1}}.submit-icon-btn{border:1px solid var(--accent-border);border-radius:8px;background:var(--accent-soft);color:var(--accent-text);width:40px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:1.2rem;line-height:1;cursor:pointer}.submit-icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.submit-icon-btn:disabled{opacity:.45;cursor:not-allowed}.close-icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.close-icon-btn.close-detail-btn{display:none}@media (hover:hover) and (pointer:fine){.app-header-degraded .copy-ical-btn:hover{background:var(--degraded-button-hover-bg);border-color:var(--degraded-button-hover-border)}.copy-ical-btn:hover{background:var(--accent-soft-hover);border-color:var(--accent-border-strong);transform:translateY(-1px)}.week-lodging-span:hover{background:color-mix(in srgb,var(--chip-lodging) 78%,var(--surface-elevated));border-color:color-mix(in srgb,var(--chip-lodging-border) 92%,var(--text))}.day-cell:hover{background:var(--surface-hover)}.chip:hover{transform:translateY(-1px);box-shadow:0 6px 14px color-mix(in srgb,var(--text) 12%,transparent)}.timeline-block:not(.timeline-block-readonly):hover{transform:translateY(-1px);box-shadow:var(--timeline-block-shadow-hover)}.timeline-block:not(.timeline-block-readonly):hover .resize-handle{opacity:1;pointer-events:auto}.segment:hover{border-color:var(--segment-hover-border);background:var(--segment-hover-bg)}.item-form button:hover,.item-form input:hover,.item-form select:hover,.item-form textarea:hover{border-color:var(--field-hover-border)}.emoji-picker-trigger:hover{border-color:var(--accent);outline:0}.emoji-picker-option:hover{border-color:var(--accent);background:var(--accent-soft);outline:0}.delete-icon-btn:hover{background:var(--danger-soft-hover)}.submit-icon-btn:hover{background:var(--accent-soft-hover)}.close-icon-btn:hover{background:var(--surface-control-hover)}}@media (max-width:860px){:root{--app-shell-padding:8px}body::after{background:radial-gradient(circle at 18% -10%,var(--shell-glow-mobile),transparent 42%)}.app-shell{gap:8px}.layout{flex:0 0 auto;grid-template-columns:1fr;gap:8px;min-height:auto}.app-header{padding:8px 10px;border-radius:10px;box-shadow:0 4px 12px rgba(15,23,42,.05)}.app-title{font-size:1.28rem}.calendar-panel,.detail-panel{border-radius:8px;box-shadow:0 4px 12px rgba(15,23,42,.05)}.calendar-panel{border-color:var(--mobile-panel-border);background:0 0;flex:0 0 auto;min-height:auto}.calendar-grid{flex:0 0 auto;gap:0;min-height:auto;overflow:visible;padding:0;background:0 0}.weekdays{display:grid}.weekdays div{font-size:.68rem;padding:6px 0;letter-spacing:.04em}.calendar-week-group{border:1px solid var(--line);border-radius:0;overflow:hidden;background:var(--mobile-week-card-bg);box-shadow:none}.bullet-train-lane,.calendar-week-group::before,.week-flight-lane,.week-flight-lane-bottom,.week-lodging-lane{display:none}.week-days{display:grid;grid-template-columns:repeat(7,1fr)}.day-cell{min-height:84px;border-right:1px solid var(--mobile-day-grid-line);border-bottom:1px solid var(--mobile-day-grid-line);border-radius:0;padding:6px;gap:4px}.day-cell.selected{background:0 0;box-shadow:none}.day-cell.selected::after{content:none}.day-cell.selected .day-open-detail,.day-cell.selected .day-top>span:first-child,.day-cell.selected .day-weather{color:inherit;text-shadow:none}.week-days .day-cell:nth-child(7n){border-right:0}.week-days .day-cell:nth-last-child(-n+7){border-bottom:0}.day-cell.padding{display:flex}.day-top{font-size:.78rem;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;column-gap:4px;row-gap:2px}.day-top>span:first-child{font-weight:700}.day-open-detail,.day-weather{display:none}.day-summary{flex-wrap:wrap;justify-content:flex-start;gap:4px}.day-summary-travel{min-width:24px;min-height:24px;font-size:.9rem}.day-summary-events{display:inline-flex;flex:1 1 auto;width:auto;justify-content:flex-start;margin-left:0;gap:4px}.day-summary-event-emoji{min-width:24px;min-height:24px;font-size:.86rem}.detail-panel{padding:8px}.detail-panel.mobile-hidden{display:none}.detail-panel.mobile-modal.modal-open{display:flex;position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:100dvh;min-height:0;z-index:18;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));border-radius:0;box-shadow:none;overflow:hidden}.detail-panel.mobile-modal .timeline{flex:1 1 auto;min-height:0}.detail-panel.mobile-modal .detail-header{position:sticky;top:0;z-index:2;background:var(--mobile-detail-header-bg);backdrop-filter:blur(2px)}.detail-panel.mobile-modal .close-detail-btn{min-width:36px;min-height:36px}.detail-panel.mobile-modal.modal-open .close-detail-btn{display:inline-flex}}