:root{--bg: #0f1016;--panel: #171823;--panel2: #1e2030;--border: #2a2c3f;--text: #e8e9f0;--muted: #9a9db1;--cyan: #22d3ee;--magenta: #e879f9;--amber: #fbbf24;--gray: #6b7086;--red: #f87171;--blue: #60a5fa;--danger: #ef4444}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.app-main{max-width:560px;margin:0 auto;padding-bottom:76px}.page{padding:12px 14px 24px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0 12px}.app-title{font-size:18px;margin:0;letter-spacing:.04em;background:linear-gradient(90deg,var(--cyan),var(--magenta));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}.dow-sat{color:var(--blue)}.dow-sun{color:var(--red)}.today-banner{border:1px solid var(--cyan);border-radius:12px;padding:12px 14px;margin-bottom:16px;background:linear-gradient(135deg,#22d3ee1f,#e879f914);box-shadow:0 0 16px #22d3ee40}.today-banner-title{color:var(--cyan);font-weight:700;font-size:14px;margin-bottom:6px}.today-banner ul{margin:0;padding-left:18px}.today-banner li{margin:2px 0;font-size:14px}.today-banner-name{font-weight:600}.today-banner-loc{color:var(--muted);font-size:12px;margin-left:8px}.month-group{margin-bottom:20px}.month-heading{font-size:15px;color:var(--cyan);border-left:3px solid var(--cyan);padding-left:8px;margin:18px 0 10px}.event-card{display:flex;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:10px}.event-card-bar{width:5px;flex-shrink:0}.status-ongoing .event-card-bar{background:var(--cyan);box-shadow:0 0 8px var(--cyan)}.status-upcoming .event-card-bar{background:var(--amber)}.status-past .event-card-bar{background:var(--gray)}.status-past{opacity:.65}.event-card-body{padding:10px 12px;flex:1;min-width:0}.event-card-top{display:flex;justify-content:space-between;align-items:center}.status-chip{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:700}.status-chip-ongoing{color:#062a31;background:var(--cyan)}.status-chip-upcoming{color:#33240a;background:var(--amber)}.status-chip-past{color:var(--text);background:var(--gray)}.event-name{font-size:16px;margin:6px 0 4px;word-break:break-word}.event-meta{font-size:13px;color:var(--muted);margin:2px 0}.event-note{font-size:13px;color:var(--magenta);margin-top:4px}.btn{min-height:44px;padding:10px 18px;border-radius:10px;border:1px solid var(--border);background:var(--panel2);color:var(--text);font-size:15px;cursor:pointer}.btn-primary{background:var(--cyan);border-color:var(--cyan);color:#062a31;font-weight:700;box-shadow:0 0 12px #22d3ee59}.btn-ghost{background:transparent}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-sm{min-height:36px;padding:6px 12px;font-size:13px}.icon-btn{min-width:44px;min-height:44px;background:transparent;border:none;color:var(--text);font-size:16px;cursor:pointer}.delete-btn{min-width:36px;min-height:36px;opacity:.7}.event-card-actions{display:flex;align-items:center}.going-btn{min-width:36px;min-height:36px;font-size:20px;color:var(--muted)}.going-btn.on{color:var(--amber);text-shadow:0 0 8px rgba(251,191,36,.8)}.going-mark{color:var(--amber);margin-right:4px;text-shadow:0 0 6px rgba(251,191,36,.7)}.past-toggle{width:100%;color:var(--muted)}.fab{position:fixed;right:18px;bottom:86px;width:58px;height:58px;border-radius:50%;border:none;font-size:24px;background:linear-gradient(135deg,var(--cyan),var(--magenta));box-shadow:0 0 18px #e879f973;cursor:pointer}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#0f1016f5;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding-bottom:env(safe-area-inset-bottom)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;color:var(--muted);text-decoration:none;font-size:11px;min-height:44px}.nav-item.active{color:var(--cyan)}.nav-icon{font-size:20px}.install-banner{background:var(--panel2);border:1px solid var(--magenta);border-radius:12px;padding:12px 14px;margin-bottom:14px}.install-banner p{margin:0 0 10px;font-size:13px}.install-banner-actions{display:flex;gap:8px;justify-content:flex-end}.empty-state{text-align:center;color:var(--muted);padding:48px 20px;font-size:14px}.event-form{display:flex;flex-direction:column;gap:12px}.form-row{display:flex;gap:10px}.form-row .form-field{flex:1}.form-field{display:flex;flex-direction:column;gap:4px}.form-field span{font-size:12px;color:var(--muted)}.form-field input{min-height:44px;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:15px;width:100%;color-scheme:dark}.form-field input:focus{outline:none;border-color:var(--cyan)}.form-error{color:var(--red);font-size:13px;margin:4px 0}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.form-actions .btn-primary{flex:1}.share-center{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:14px;text-align:center}.share-hint{color:var(--muted);font-size:13px;margin:4px 0 12px}.done-mark{font-size:48px}.spinner{width:44px;height:44px;border:4px solid var(--panel2);border-top-color:var(--cyan);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.calendar-header{justify-content:space-between}.calendar-header .month-heading{border:none;margin:0;font-size:17px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-dow{text-align:center;font-size:12px;color:var(--muted);margin:8px 0 6px}.calendar-dow div{text-align:center}.cal-cell{aspect-ratio:1 / 1.1;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:6px;gap:4px;cursor:pointer}.cal-cell.empty{background:transparent;border-color:transparent;cursor:default}.cal-cell.today{border-color:var(--cyan);box-shadow:0 0 10px #22d3ee66 inset}.cal-day{font-size:13px}.cal-dots{display:flex;gap:3px}.cal-dot{width:6px;height:6px;border-radius:50%;background:var(--magenta);box-shadow:0 0 4px var(--magenta)}.cal-star{color:var(--amber);font-size:11px;line-height:1;text-shadow:0 0 5px rgba(251,191,36,.9)}.calendar-page{min-height:calc(100dvh - 100px);touch-action:pan-y}.slide-left{animation:slide-in-left .22s ease-out}.slide-right{animation:slide-in-right .22s ease-out}@keyframes slide-in-left{0%{transform:translate(36px);opacity:.3}to{transform:translate(0);opacity:1}}@keyframes slide-in-right{0%{transform:translate(-36px);opacity:.3}to{transform:translate(0);opacity:1}}.cal-legend{display:flex;align-items:center;gap:6px;justify-content:flex-end;color:var(--muted);font-size:12px;margin:10px 2px 0}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:30;display:flex;align-items:flex-end}.bottom-sheet{background:var(--panel2);border-radius:16px 16px 0 0;border-top:1px solid var(--cyan);width:100%;max-width:560px;margin:0 auto;padding:16px 16px calc(16px + env(safe-area-inset-bottom));max-height:70vh;overflow-y:auto}.sheet-title{font-size:15px;color:var(--cyan);margin:0 0 12px}.sheet-item{border-bottom:1px solid var(--border);padding:10px 0}.sheet-item .event-name{font-size:15px;margin:0 0 4px}.sheet-item-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.sheet-close{width:100%;margin-top:12px}.settings-count{color:var(--muted);font-size:14px}.settings-section{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:14px}.settings-section h2{font-size:14px;margin:0 0 8px;color:var(--cyan)}.settings-desc{font-size:13px;color:var(--muted);margin:0 0 12px}.settings-actions{display:flex;gap:10px;flex-wrap:wrap}.settings-message{color:var(--cyan);font-size:14px;text-align:center}
