*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #3F51B5;--primary-light: #5C6BC0;--primary-dark: #303F9F;--nav-bg: #1B2838;--on-primary: #ffffff;--surface: #ffffff;--surface-dim: #f5f5f5;--surface-container: #f0f0f3;--on-surface: #1C1B1F;--on-surface-variant: #49454F;--outline: #79747E;--outline-variant: #CAC4D0;--error: #B3261E;--success: #2E7D32;--warning: #E65100;--radius: 12px;--radius-sm: 8px;--radius-xs: 4px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--surface-dim);color:var(--on-surface);min-height:100vh;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}.navbar{background:var(--nav-bg);padding:0 12px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.navbar-brand{font-size:1rem;font-weight:600;color:var(--on-primary);text-decoration:none;letter-spacing:.01em}.navbar-brand:hover{opacity:.9}.navbar-user{display:flex;align-items:center;gap:8px}.navbar-email{color:#fffffff2;font-size:.8rem;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar .btn-sm{background:#ffffff26;color:var(--on-primary);border-color:#ffffff4d;font-size:.75rem;padding:4px 10px}.navbar .btn-sm:hover{background:#ffffff40}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;border:1px solid transparent;cursor:pointer;transition:background .15s,opacity .15s;white-space:nowrap;line-height:1.4}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-secondary{background:transparent;color:var(--primary);border-color:var(--outline-variant)}.btn-secondary:hover:not(:disabled){background:#3f51b50f}.btn-danger{background:var(--error);color:#fff;border-color:var(--error)}.btn-danger:hover:not(:disabled){background:#9a1f17}.btn-sm{padding:4px 12px;font-size:.8rem}.btn-xs{padding:2px 8px;font-size:.75rem}.btn-link{background:none;border:none;color:var(--primary);cursor:pointer;font-size:inherit;padding:0;text-decoration:underline}.btn-link:hover{color:var(--primary-dark)}.btn-day{min-width:40px;padding:4px 6px;font-size:.75rem;border-radius:var(--radius-xs)}.main-content{max-width:640px;margin:0 auto;padding:12px 12px 24px}@media(min-width:640px){.main-content{padding:16px 16px 32px}.navbar{padding:0 16px}.navbar-email{max-width:200px}}.loading{color:var(--on-surface-variant);font-style:italic;padding:24px 12px;text-align:center;font-size:.875rem}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--on-surface-variant);font-size:.875rem}.error-container{padding:24px 12px;text-align:center}.error-container .error{color:var(--error);margin-bottom:12px;font-size:.875rem}.error-container a,.error-container button{color:var(--primary);font-size:.875rem}.error-container button{background:none;border:1px solid var(--outline-variant);padding:6px 16px;border-radius:var(--radius-sm);cursor:pointer}.page-header{padding:8px 0 12px}.page-header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.back-link{color:var(--primary);text-decoration:none;font-size:.8rem;font-weight:500}.back-link:hover{text-decoration:underline}.page-title{font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--on-surface)}.page-title-editable{cursor:pointer;border-radius:var(--radius-xs);padding:2px 4px;margin:-2px -4px}.page-title-editable:hover{background:#0000000a}.page-meta-tz{color:var(--on-surface-variant);font-size:.8rem;margin-top:2px}.inline-edit-title{display:flex;gap:6px;align-items:center;margin-bottom:4px}.page-title-input{flex:1;font-size:1.1rem;font-weight:600}.header-actions{display:flex;gap:6px}.section{padding:12px 0;border-top:1px solid var(--outline-variant)}.section:first-of-type{border-top:none}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.section-header h2{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant)}.form-input{width:100%;padding:8px 12px;border:1px solid var(--outline-variant);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;background:var(--surface);color:var(--on-surface);transition:border-color .15s}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.form-input-sm{padding:4px 8px;font-size:.8rem}.form-input-inline{width:auto}.form-textarea{resize:vertical;min-height:60px}.form-field{margin-bottom:10px}.form-field label{display:block;font-size:.8rem;font-weight:500;color:var(--on-surface-variant);margin-bottom:4px}.form-field-half{flex:1;min-width:0}.form-row{display:flex;gap:8px}.form-actions{display:flex;gap:8px;margin-top:12px}.form-error{color:var(--error);font-size:.8rem;margin-top:4px}.form-hint{display:block;font-size:.75rem;color:var(--on-surface-variant);margin-top:3px}.create-page-form{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius);padding:12px;margin-bottom:12px}.visibility-toggle,.days-toggle{display:flex;gap:4px;flex-wrap:wrap}.dashboard{padding:4px 0}.page-list{list-style:none;display:flex;flex-direction:column;gap:6px}.page-card{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius-sm);padding:10px 12px;transition:background .15s}.page-card:hover{background:var(--surface-container)}.page-card a{color:var(--on-surface);text-decoration:none;font-weight:500;font-size:.9rem}.page-card a:hover{color:var(--primary)}.series-list{list-style:none;display:flex;flex-direction:column;gap:8px}.series-card{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius);padding:10px 12px}.series-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.series-card-title{font-weight:500;color:var(--on-surface);text-decoration:none;font-size:.9rem}.series-card-title:hover{color:var(--primary)}.series-card-schedule,.series-card-desc{font-size:.8rem;color:var(--on-surface-variant);margin-bottom:4px}.series-card-location{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:4px}.series-card-actions{margin-top:6px}.badge{display:inline-flex;align-items:center;padding:1px 8px;border-radius:100px;font-size:.7rem;font-weight:500;text-transform:capitalize;white-space:nowrap}.badge-role-organizer{background:#3f51b51a;color:var(--primary)}.badge-role-participant{background:#0000000f;color:var(--on-surface-variant)}.badge-role-teacher{background:#2e7d321a;color:var(--success)}.location-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:var(--surface-container);border-radius:100px;font-size:.78rem;color:var(--on-surface-variant)}.link-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:#3f51b514;border-radius:100px;font-size:.78rem;color:var(--primary);text-decoration:none}.link-chip:hover{background:#3f51b524}.series-meta{font-size:.8rem;color:var(--on-surface-variant);margin-top:2px}.series-meta-link{margin-top:4px}.muted-link{color:var(--on-surface-variant);text-decoration:none}.muted-link:hover{color:var(--primary);text-decoration:underline}.series-description{font-size:.85rem;color:var(--on-surface-variant);margin-top:6px}.series-location-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:6px}.members-list{list-style:none;display:flex;flex-direction:column;gap:4px}.member-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:.85rem}.member-uid{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-section{margin-top:8px}.invite-controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.invite-link-box{display:flex;gap:6px;margin-top:6px}.invite-link-box .form-input{flex:1}.meeting-card{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px}.meeting-card-past{opacity:.7}.meeting-card-label{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);margin-bottom:2px}.meeting-card-header{display:flex;align-items:center;justify-content:space-between}.meeting-card-date{color:var(--on-surface);text-decoration:none;font-weight:500;font-size:.9rem}.meeting-card-date:hover{color:var(--primary)}.meeting-card-notes{font-size:.8rem;color:var(--on-surface-variant);margin-top:4px}.meeting-card-location{font-size:.8rem;color:var(--on-surface-variant);margin-top:2px}.next-meeting-edit,.upcoming-list{margin-top:8px}.upcoming-list-heading{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant);margin-bottom:6px}.upcoming-row{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--surface-container);font-size:.85rem}.upcoming-date{min-width:0;flex-shrink:0;color:var(--on-surface);text-decoration:none;font-size:.8rem}.upcoming-date:hover{color:var(--primary)}.upcoming-location{flex:1;color:var(--on-surface-variant);font-size:.8rem;text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upcoming-location-clickable{cursor:pointer;border-radius:var(--radius-xs);padding:2px 4px}.upcoming-location-clickable:hover{background:#0000000a}.upcoming-location-input{flex:1}.rotation-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.rotation-index{font-size:.8rem;color:var(--on-surface-variant);min-width:18px}.rotation-row .form-input{flex:1}.toggle-row{display:flex;align-items:center;gap:8px;font-size:.85rem;cursor:pointer}.toggle-row input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px}.location-detail{display:flex;flex-direction:column;gap:6px}.location-detail-item{display:flex;align-items:center;gap:8px;font-size:.85rem}.location-icon{display:flex;align-items:center;color:var(--on-surface-variant)}.location-icon svg{width:16px;height:16px}.join-link{color:var(--primary);text-decoration:none}.join-link:hover{text-decoration:underline}.occurrence-notes{font-size:.85rem;color:var(--on-surface);white-space:pre-wrap}.edit-scope-note{font-size:.7rem;color:var(--on-surface-variant);font-style:italic}.checkin-done{display:flex;align-items:center;gap:8px}.checkin-done-label{font-weight:500;color:var(--success);font-size:.9rem}.checkin-list{list-style:none;display:flex;flex-direction:column;gap:4px}.checkin-item{display:flex;align-items:center;gap:8px;font-size:.85rem}.checkin-name{font-weight:500}.checkin-time{color:var(--on-surface-variant);font-size:.75rem}.placeholder{color:var(--on-surface-variant);font-size:.85rem;padding:4px 0}.placeholder-sm{color:var(--on-surface-variant);font-size:.8rem}.md-line{margin-bottom:2px;line-height:1.5}.md-line a{color:var(--primary);text-decoration:underline}.md-line a:hover{color:var(--primary-dark)}.landing,.sign-in{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;padding:24px 16px}.landing h1,.sign-in h1{font-size:1.5rem;font-weight:700;margin-bottom:8px;color:var(--on-surface)}.landing p{color:var(--on-surface-variant);margin-bottom:20px;font-size:.9rem}.summary-page{max-width:480px;margin:0 auto;padding:16px 12px}.summary-cancelled-banner{background:#b3261e14;color:var(--error);padding:8px 12px;border-radius:var(--radius-sm);text-align:center;font-size:.85rem;font-weight:500;margin-bottom:12px}.summary-hero{padding:16px 0 12px;text-align:center}.summary-title{font-size:1.4rem;font-weight:700}.summary-date{color:var(--on-surface-variant);font-size:.9rem;margin-top:4px}.summary-duration{color:var(--on-surface-variant);font-size:.85rem}.summary-series{color:var(--on-surface-variant);font-size:.8rem;margin-top:4px}.summary-section{border-top:1px solid var(--outline-variant);padding:12px 0}.summary-section-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant);margin-bottom:6px}.summary-join-btn{display:block;text-align:center;padding:10px 16px;background:var(--primary);color:var(--on-primary);border-radius:var(--radius-sm);text-decoration:none;font-weight:500;font-size:.9rem;margin-bottom:8px}.summary-join-btn:hover{background:var(--primary-dark)}.summary-location{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--on-surface)}.summary-location svg{color:var(--on-surface-variant);flex-shrink:0}.summary-notes{font-size:.85rem;color:var(--on-surface);white-space:pre-wrap}.summary-share{display:flex;gap:8px;justify-content:center}.summary-footer{text-align:center;padding:16px 0;font-size:.75rem;color:var(--on-surface-variant)}.chat{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius);overflow:hidden;margin-top:8px}.chat-messages{max-height:280px;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:6px}.chat-empty{color:var(--on-surface-variant);font-size:.8rem;text-align:center;padding:12px 0}.chat-msg{display:flex}.chat-msg-user{justify-content:flex-end}.chat-msg-assistant{justify-content:flex-start}.chat-msg-text{max-width:85%;padding:6px 10px;border-radius:var(--radius-sm);font-size:.85rem;line-height:1.4;white-space:pre-wrap;word-break:break-word}.chat-msg-user .chat-msg-text{background:var(--primary);color:var(--on-primary);border-bottom-right-radius:var(--radius-xs)}.chat-msg-assistant .chat-msg-text{background:var(--surface-container);color:var(--on-surface);border-bottom-left-radius:var(--radius-xs)}.chat-proposal{display:flex;flex-direction:column;gap:4px;background:#3f51b50f;border:1px solid var(--outline-variant);border-radius:var(--radius-sm);padding:8px;max-width:85%;font-size:.8rem}.chat-proposal-text{color:var(--on-surface)}.chat-error{color:var(--error);font-size:.78rem;padding:4px 8px}.chat-input-row{display:flex;gap:6px;padding:6px 8px;border-top:1px solid var(--outline-variant)}.chat-input{flex:1;padding:6px 10px;border:1px solid var(--outline-variant);border-radius:var(--radius-sm);font-size:.85rem;font-family:inherit;background:var(--surface);color:var(--on-surface)}.chat-input:focus{outline:none;border-color:var(--primary)}.chat-send{flex-shrink:0}.chat-dots{display:inline-flex;gap:3px;padding:8px 12px}.chat-dots span{width:6px;height:6px;border-radius:50%;background:var(--on-surface-variant);animation:chatDot 1.2s infinite ease-in-out}.chat-dots span:nth-child(2){animation-delay:.2s}.chat-dots span:nth-child(3){animation-delay:.4s}@keyframes chatDot{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.report-controls{margin-bottom:8px;font-size:.8rem;color:var(--on-surface-variant)}.report-window-select{width:auto;display:inline;padding:2px 4px;font-size:.8rem}.report-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.report-table{width:100%;border-collapse:collapse;font-size:.78rem}.report-table th,.report-table td{padding:4px 6px;text-align:center;border-bottom:1px solid var(--outline-variant)}.report-name-col{text-align:left;min-width:80px;position:sticky;left:0;background:var(--surface);z-index:1;font-weight:500}.report-date-col{font-size:.7rem;white-space:nowrap}.report-date-col a{color:var(--on-surface-variant);text-decoration:none}.report-date-col a:hover{color:var(--primary)}.report-cell{white-space:nowrap}.report-cell-done{color:var(--success);font-weight:500}.report-cell-miss{color:var(--on-surface-variant)}.invite-page{text-align:center;padding:32px 16px}.invite-page h2{font-size:1.25rem;margin-bottom:8px}.invite-page p{color:var(--on-surface-variant);margin:8px 0 16px;font-size:.9rem}.invite-page .form-error{margin-bottom:12px}.invite-actions{display:flex;gap:8px;justify-content:center}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:3px}::-webkit-scrollbar-track{background:transparent}.toast{position:fixed;bottom:24px;right:24px;min-width:320px;max-width:500px;background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius);padding:12px 16px;box-shadow:0 4px 12px #00000026;display:flex;flex-direction:column;gap:8px;opacity:0;transform:translateY(20px);transition:opacity .3s ease,transform .3s ease;z-index:1000}.toast-visible{opacity:1;transform:translateY(0)}.toast-message{font-size:.9rem;line-height:1.4}.toast-actions{display:flex;gap:8px;justify-content:flex-end}.toast-success{border-left:4px solid var(--success)}.toast-error{border-left:4px solid var(--error)}.toast-info{border-left:4px solid var(--primary)}.host-banner{display:flex;align-items:baseline;gap:8px;padding:12px 16px;background:var(--surface-container);border-radius:var(--radius)}.host-label{font-size:.875rem;color:var(--on-surface-variant);font-weight:500}.host-name{font-size:1.1rem;color:var(--on-surface);font-weight:600}.host-badge{font-size:.8rem;color:var(--on-surface-variant);padding:2px 8px;background:var(--surface-container);border-radius:var(--radius-xs)}.upcoming-host{font-size:.85rem;color:var(--on-surface-variant)}.upcoming-host-clickable{cursor:pointer;padding:4px 8px;border-radius:var(--radius-xs);transition:background .15s}.upcoming-host-clickable:hover{background:var(--surface-container)}.upcoming-host-clickable:focus{outline:2px solid var(--primary);outline-offset:2px}.upcoming-host-input{max-width:200px}.rotation-chip{font-size:.8rem;color:var(--on-surface-variant);padding:4px 8px;background:var(--surface-container);border-radius:var(--radius-xs);display:inline-block}.series-card-meta{margin-top:8px;font-size:.85rem}.telegram-bot-config{display:flex;flex-direction:column;gap:10px}.telegram-bot-info{display:flex;align-items:center;gap:8px;font-size:.9rem}.telegram-bot-username a{color:var(--primary);text-decoration:none;font-weight:500}.telegram-bot-username a:hover{text-decoration:underline}
