:root{color-scheme:light;--bg: #f8f9ff;--surface: #ffffff;--surface-2: #f7f8fc;--surface-hover: #f1f3fb;--text: #1a1a2e;--text-strong: #16213e;--text-muted: #565d70;--text-faint: #8a90a6;--text-disabled: #b8bccb;--border: #e6e8f0;--border-soft: #eceef5;--input-bg: #fafbff;--input-border: #cdd2e0;--primary: #6366f1;--primary-strong: #4f46e5;--on-primary: #ffffff;--link: #4f46e5;--accent-soft: #eef2ff;--focus-ring: rgba(99, 102, 241, .25);--now-line: #1e40af;--accent: #047857;--accent-strong: #036249;--on-accent: #ffffff;--chip-bg: #e0e7ff;--chip-fg: #3730a3;--chip-bg-hover: #c7d2fe;--ok-bg: #d1fae5;--ok-fg: #065f46;--ok-border: #6ee7b7;--danger-bg: #fee2e2;--danger-fg: #991b1b;--danger-border: #fca5a5;--shadow: 0 6px 24px rgba(20, 30, 80, .06);--shadow-strong: 0 12px 40px rgba(20, 30, 80, .25);--backdrop: rgba(20, 25, 50, .45)}:root[data-theme=dark]{color-scheme:dark;--bg: #0f1117;--surface: #1a1d27;--surface-2: #20242f;--surface-hover: #242a38;--text: #e4e6ee;--text-strong: #f3f5fb;--text-muted: #aab0c0;--text-faint: #888f9f;--text-disabled: #555d70;--border: #2a2f3d;--border-soft: #242a38;--input-bg: #20242f;--input-border: #353b4b;--primary: #6366f1;--primary-strong: #7c84ff;--on-primary: #ffffff;--link: #a5b0ff;--accent-soft: #262e4a;--focus-ring: rgba(129, 140, 248, .35);--now-line: #60a5fa;--chip-bg: #312e81;--chip-fg: #c7d2fe;--chip-bg-hover: #3b378f;--ok-bg: #0c3b2e;--ok-fg: #6ee7b7;--ok-border: #0f5a44;--danger-bg: #3a1d1d;--danger-fg: #f4a3a3;--danger-border: #7f3434;--shadow: 0 6px 24px rgba(0, 0, 0, .45);--shadow-strong: 0 12px 40px rgba(0, 0, 0, .6);--backdrop: rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;font-size:16px;line-height:1.5}body{margin:0;padding:0;min-height:100vh;min-height:100dvh;color:var(--text);background-color:var(--bg)}#root{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;min-height:100vh;min-height:100dvh;padding:2rem}.auth-card{margin-block:auto}.card-page{max-width:460px;text-align:left}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.page-shell{flex:1 1 auto;align-self:stretch;width:100%;display:flex;align-items:center;justify-content:center}h1{font-size:2.5rem;font-weight:700;margin:0 0 .5rem;color:var(--text-strong)}p{margin:.25rem 0;color:var(--text-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2rem 2.25rem;width:100%;max-width:360px;box-shadow:var(--shadow);text-align:center}.form{display:flex;flex-direction:column;gap:1rem;text-align:left}.form-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;color:var(--text-muted);min-width:0}.form-field input,.form-field select,.form-field textarea{width:100%}input,select{font:inherit;padding:.6rem .75rem;border:1px solid var(--input-border);border-radius:8px;background:var(--input-bg);color:var(--text)}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--focus-ring)}.password-input{position:relative}.password-input input{width:100%;padding-right:2.75rem}.password-toggle{position:absolute;top:0;right:0;height:100%;display:flex;align-items:center;padding:0 .7rem;background:none;border:none;border-radius:0 8px 8px 0;color:var(--text-muted)}.password-toggle:hover:not(:disabled){background:none;color:var(--text)}button{font:inherit;font-weight:600;cursor:pointer;padding:.6rem 1rem;border:none;border-radius:8px;background:var(--primary);color:var(--on-primary);transition:background .15s ease}button:hover:not(:disabled){background:var(--primary-strong)}button:disabled{opacity:.6;cursor:not-allowed}button:focus-visible,a:focus-visible,[role=menuitem]:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.error{color:var(--danger-fg);background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:8px;padding:.5rem .75rem;font-size:.85rem;margin:0}.success{color:var(--ok-fg);background:var(--ok-bg);border:1px solid var(--ok-border);border-radius:8px;padding:.5rem .75rem;font-size:.85rem;margin:0}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-hover)}.btn-accent{background:var(--accent);color:var(--on-accent)}.btn-accent:hover:not(:disabled){background:var(--accent-strong)}.form-row{display:flex;gap:.75rem}.app-shell{width:100%;max-width:920px}.topbar{display:flex;align-items:center;justify-content:space-between;padding-bottom:1rem;border-bottom:1px solid var(--border)}.topbar-left{display:flex;align-items:center;gap:.5rem}.brand{font-size:1.25rem;color:var(--text-strong)}.theme-toggle,.menu-trigger{--icon-btn-size: 2.4rem;display:inline-flex;align-items:center;justify-content:center;width:var(--icon-btn-size);height:var(--icon-btn-size);padding:0;font-size:1.2rem;line-height:1}.theme-toggle{background:transparent;border:none;cursor:default}.theme-toggle:hover:not(:disabled){background:transparent}.topbar-right{display:flex;align-items:center;gap:.6rem}.label-short{display:none}.calendar{margin-top:1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem}.calendar-title-row{display:flex;align-items:center;gap:.6rem}.calendar-title{margin:0;font-size:1.3rem;color:var(--text-strong)}.calendar-spinner{width:1rem;height:1rem;flex:0 0 auto;border-radius:50%;border:2px solid var(--text-faint);border-top-color:transparent;opacity:0;transition:opacity .15s ease}.calendar-spinner.is-busy{opacity:1;animation:calendar-spin .7s linear infinite}@keyframes calendar-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.calendar-spinner.is-busy{animation:none}}.calendar-nav{display:flex;gap:.5rem}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-weekday{padding:.5rem;text-align:center;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);background:var(--surface-2);border-top:1px solid var(--border)}.calendar-cell{min-height:96px;padding:4px;border-top:1px solid var(--border-soft);border-left:1px solid var(--border-soft);cursor:pointer;display:flex;flex-direction:column;gap:3px}.calendar-cell:hover{background:var(--surface-hover)}.calendar-cell:nth-child(7n){border-right:none}.calendar-cell.is-outside{background:var(--surface-2);color:var(--text-disabled)}.calendar-cell.is-outside .calendar-daynum{color:var(--text-disabled)}.calendar-cell.is-today{background:var(--accent-soft)}.calendar-cell.is-today .calendar-daynum{background:var(--primary);color:var(--on-primary)}.calendar-daynum{align-self:flex-end;background:transparent;border:none;padding:0;cursor:pointer;font-size:.8rem;font-weight:600;color:var(--text-muted);min-width:1.5em;height:1.5em;line-height:1.5em;text-align:center;border-radius:50%}.calendar-daynum:hover:not(:disabled){background:transparent}.calendar-cell.is-today .calendar-daynum:hover:not(:disabled){background:var(--primary)}.calendar-events{display:flex;flex-direction:column;gap:2px}.event-chip{font:inherit;text-align:left;border:none;border-radius:5px;padding:2px 5px;background:var(--chip-bg);color:var(--chip-fg);font-size:.72rem;line-height:1.4;cursor:pointer;display:flex;flex-direction:column;gap:2px}.event-chip:hover{background:var(--chip-bg-hover)}.event-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-time{font-weight:700}.friend-chip{border-radius:5px;padding:2px 5px;background:var(--ok-bg);color:var(--ok-fg);font-size:.72rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.daygrid{display:grid;border-top:1px solid var(--border)}.daycol{min-height:320px;display:flex;flex-direction:column;gap:3px;padding-bottom:4px;border-left:1px solid var(--border-soft);cursor:pointer}.daycol:first-child{border-left:none}.daycol:hover{background:var(--surface-hover)}.daycol.is-today{background:var(--accent-soft)}.daycol.is-today .calendar-daynum{background:var(--primary);color:var(--on-primary)}.daycol.is-today .calendar-daynum:hover:not(:disabled){background:var(--primary)}.daycol-head{display:flex;align-items:center;justify-content:space-between;gap:.3rem;padding:.4rem .5rem;background:var(--surface-2);border-bottom:1px solid var(--border-soft)}.daycol-weekday{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.daycol-head .calendar-daynum{align-self:auto}.daycol .calendar-events{padding:0 5px}.calendar-events.timed{display:block;position:relative;--axis-gutter: 26px;margin-top:4px}.time-line{position:absolute;left:0;right:0;border-top:1px dotted var(--border)}.time-line.is-noon{border-top-style:dashed;border-top-color:var(--text-faint)}.time-line-label{position:absolute;left:0;top:-.55em;font-size:.55rem;font-weight:700;color:var(--text-faint);background:var(--surface);padding-right:3px}.calendar-events.timed .event-chip,.calendar-events.timed .friend-chip{overflow:hidden}.daycol.is-today .calendar-events.timed .time-line-label{background:var(--accent-soft)}.now-line{position:absolute;left:0;right:0;border-top:2px solid var(--now-line);z-index:2}.now-line:before{content:"";position:absolute;left:0;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--now-line)}.singleday-head{border-bottom:1px solid var(--border)}.singleday-grid{grid-template-columns:1fr 1fr}.ampm-label{padding:.35rem .5rem 0;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint)}.view-select{padding:.3rem .5rem;font-size:.85rem;font-weight:600;color:var(--text-muted)}.friends-toggle{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .6rem;font-size:.85rem;-webkit-user-select:none;user-select:none}.friends-toggle.is-on{color:var(--accent);border-color:var(--accent)}.dev-login{margin-top:1.5rem;padding-top:1rem;border-top:1px dashed var(--border)}.dev-login-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);margin-bottom:.5rem}.dev-login-buttons{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}.event-tags{display:flex;flex-wrap:wrap;gap:2px}.event-tag{background:var(--primary-strong);color:var(--on-primary);border-radius:4px;padding:0 4px;font-size:.62rem;line-height:1.5;white-space:nowrap}.tag-checklist{display:flex;flex-wrap:wrap;gap:.4rem}.tag-check{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--input-border);border-radius:999px;padding:.2rem .6rem;font-size:.8rem;font-weight:500;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.tag-check.is-on{background:var(--accent-soft);border-color:var(--primary);color:var(--chip-fg)}.tag-check input{margin:0;width:auto;padding:0}.hint{color:var(--text-faint);font-size:.85rem;font-weight:400;margin:0}.link-button{background:none;border:none;padding:0;color:var(--link);font:inherit;font-weight:600;cursor:pointer}.link-button:hover{text-decoration:underline;background:none}.faq-list{display:flex;flex-direction:column;gap:.5rem;text-align:left}.faq-item{border:1px solid var(--border);border-radius:10px;background:var(--surface-2);overflow:hidden}.faq-item summary{list-style:none;cursor:pointer;padding:.85rem 1rem;font-weight:600;color:var(--text-strong);display:flex;justify-content:space-between;align-items:center;gap:1rem}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";color:var(--text-faint);font-weight:400;font-size:1.25rem;line-height:1}.faq-item[open] summary:after{content:"−"}.faq-item summary:hover{background:var(--surface-hover)}.faq-answer{padding:0 1rem 1rem;color:var(--text-muted);line-height:1.5}.conv-row{display:flex;flex-direction:column;gap:2px;width:100%;padding:.6rem 0;background:transparent;border:none;border-bottom:1px solid var(--border-soft);border-radius:0;color:inherit;font-weight:400;cursor:pointer;text-align:left}.conv-row:hover:not(:disabled){background:var(--surface-hover)}.conv-title{font-weight:600;color:var(--text-strong)}.conv-preview{font-size:.85rem;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.msg-list{display:flex;flex-direction:column;gap:.5rem;max-height:50vh;overflow-y:auto;padding:.5rem 0}.msg{display:flex;flex-direction:column;max-width:80%}.msg-mine{align-self:flex-end;align-items:flex-end}.msg-other{align-self:flex-start;align-items:flex-start}.msg-sender{font-size:.72rem;color:var(--text-faint);margin-bottom:1px}.msg-bubble{padding:.4rem .7rem;border-radius:12px;font-size:.9rem;line-height:1.35;word-break:break-word}.msg-other .msg-bubble{background:var(--surface-2);color:var(--text)}.msg-mine .msg-bubble{background:var(--primary);color:var(--on-primary)}.btn-sm{padding:.2rem .6rem;font-size:.8rem}.muted-pill{font-size:.8rem;color:var(--text-faint);padding:.2rem .4rem}.tag-list{list-style:none;margin:.5rem 0 0;padding:0}.tag-list-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid var(--border-soft)}.event-results{list-style:none;margin:0;padding:0}.event-result{padding:.6rem 0;border-bottom:1px solid var(--border-soft);display:flex;flex-direction:column;gap:3px}.event-result-head{display:flex;align-items:baseline;gap:.5rem}.event-result-label{font-weight:600;color:var(--text-strong)}.event-result-when{font-size:.85rem;color:var(--text-muted)}.nav-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#e5484d;flex-shrink:0}.nav-dot.corner{position:absolute;top:2px;right:2px;box-shadow:0 0 0 2px var(--surface)}.nav-dot.inline{margin-left:auto}.nav-dot.inline-lead{margin-right:.4rem;vertical-align:middle}.requests-panel{margin-top:1.25rem;padding:.75rem .9rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-hover)}.btn-danger{color:var(--danger-fg);border-color:var(--danger-border);padding:.2rem .6rem}.menu{position:relative;display:inline-block}.menu-dropdown{position:absolute;right:0;top:calc(100% + 6px);min-width:180px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-strong);padding:6px;z-index:60;display:flex;flex-direction:column;gap:2px}.menu-header{padding:.3rem .6rem .5rem;border-bottom:1px solid var(--border-soft);margin-bottom:4px}.menu-header-button{display:block;width:100%;background:none;border:none;border-bottom:1px solid var(--border-soft);border-radius:6px 6px 0 0;text-align:left;cursor:pointer;font:inherit}.menu-header-button:hover{background:var(--surface-hover)}.menu-header .name{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-weight:600;color:var(--text-strong)}.menu-header .cog{color:var(--text-faint);font-size:.95rem}.menu-header .email{font-size:.8rem;color:var(--text-faint)}.menu-item{display:flex;align-items:center;background:none;border:none;color:var(--text);text-align:left;padding:.5rem .6rem;border-radius:6px;font-weight:500;cursor:pointer}.menu-item:hover{background:var(--surface-hover)}.menu-item-danger{color:var(--danger-fg)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.modal-panel{background:var(--surface);border-radius:12px;padding:1.5rem 1.75rem;width:100%;max-width:380px;box-shadow:var(--shadow-strong);text-align:left}@media (max-width: 768px){#root{padding:1rem}h1{font-size:1.9rem}.card{padding:1.5rem 1.25rem}.topbar{flex-wrap:wrap;gap:.5rem}.topbar-right{flex-wrap:wrap;gap:.4rem}.topbar-right button:not(.theme-toggle):not(.menu-trigger){padding:.4rem .6rem;font-size:.8rem}.theme-toggle,.menu-trigger{--icon-btn-size: 2rem;font-size:1.05rem}.label-full{display:none}.label-short{display:inline}.calendar-toolbar{padding:.75rem;flex-wrap:wrap;gap:.5rem}.calendar-title{font-size:1.1rem}.calendar-nav{flex-wrap:wrap;gap:.4rem}.calendar-nav button{padding:.4rem .6rem;font-size:.85rem}.calendar-weekday{padding:.35rem 0;font-size:.6rem}.calendar-cell{min-height:60px;padding:2px}.daycol{min-height:200px}.daycol-head{padding:.3rem}.daycol-weekday{font-size:.6rem}.calendar-daynum{font-size:.72rem}.event-chip,.friend-chip{font-size:.6rem}.msg{max-width:90%}}
