*,:before,:after{box-sizing:border-box}body{color:#2c3e50;background:#f0f7fb;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#root{min-height:100vh}.login-bg{background:linear-gradient(135deg,#006994 0%,#00a8cc 50%,#4ecdc4 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:#fffffff7;border-radius:16px;width:100%;max-width:420px;padding:40px;box-shadow:0 20px 60px #0000004d}.login-header{text-align:center;margin-bottom:32px}.login-emoji{margin-bottom:8px;font-size:3em}.login-header h1{color:#006994;margin:0;font-size:1.8em}.login-header p{color:#666;margin:4px 0 0}label{color:#444;margin-bottom:8px;font-weight:600;display:block}.did-buttons{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:16px;display:grid}.did-btn{cursor:pointer;background:#f9f9f9;border:2px solid #ddd;border-radius:8px;padding:10px 6px;font-size:.9em;transition:all .15s}.did-btn:hover{background:#e8f7fb;border-color:#00a8cc}.did-btn.selected{background:#ceeaf5;border-color:#006994;font-weight:600}.or-divider{text-align:center;color:#999;margin:12px 0;font-size:.8em;position:relative}input[type=text],textarea{box-sizing:border-box;border:2px solid #ddd;border-radius:8px;width:100%;margin-bottom:16px;padding:10px 12px;font-family:inherit;font-size:.95em;transition:border-color .15s}input[type=text]:focus,textarea:focus{border-color:#00a8cc;outline:none}textarea{resize:vertical;font-family:monospace;font-size:.85em}.primary-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#006994,#00a8cc);border:none;border-radius:8px;width:100%;padding:12px;font-size:1em;font-weight:600;transition:opacity .15s}.primary-btn:hover:not(:disabled){opacity:.9}.primary-btn:disabled{opacity:.5;cursor:not-allowed}.back-btn{cursor:pointer;background:#eee;border:none;border-radius:8px;padding:12px 20px;font-size:1em}.back-btn:hover{background:#ddd}.btn-row{gap:10px;display:flex}.btn-row .primary-btn{flex:1;width:auto}.error{color:#d32f2f;background:#ffeaea;border-radius:6px;margin-bottom:12px;padding:10px;font-size:.9em}.sign-intro{color:#555;margin-bottom:16px;line-height:1.5}.sign-intro small{color:#4caf50}.challenge-box{background:#f5f5f5;border-radius:8px;margin-bottom:16px;padding:12px}.challenge-box label{color:#888;margin-bottom:4px;font-size:.8em}.challenge-box code{color:#333;word-break:break-all;font-size:.85em}.login-footer{text-align:center;margin-top:24px}.login-footer small{color:#999;font-size:.8em}.login-footer a{color:#006994}.page{max-width:900px;margin:0 auto;padding:24px 20px}.dashboard-hero{text-align:center;padding:40px 0 32px}.hero-emoji{font-size:3em}.dashboard-hero h1{color:#006994;margin:8px 0 4px;font-size:2em}.dashboard-hero p{color:#666}.card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-top:16px;display:grid}.dash-card{text-align:center;color:inherit;cursor:pointer;background:#fff;border-radius:12px;padding:24px;text-decoration:none;transition:transform .15s,box-shadow .15s;box-shadow:0 2px 12px #0069941a}.dash-card:hover:not(.coming-soon){transform:translateY(-3px);box-shadow:0 6px 20px #00699433}.dash-card.coming-soon{opacity:.5;cursor:default}.card-icon{margin-bottom:12px;font-size:2.5em}.dash-card h3{color:#006994;margin:0 0 6px}.dash-card p{color:#888;margin:0;font-size:.9em}.did-info{text-align:center;color:#bbb;margin-top:32px}.did-info code{font-size:.85em}.page-title{color:#006994;margin-bottom:8px;font-size:1.8em}.motto{color:#666;margin-bottom:32px;font-style:italic}.member-list{flex-direction:column;gap:12px;display:flex}.member-card{background:#fff;border-radius:10px;align-items:center;gap:16px;padding:16px 20px;display:flex;box-shadow:0 2px 8px #00699414}.member-card.agent{border-left:4px solid #4ecdc4}.member-card.person{border-left:4px solid #006994}.member-name{min-width:160px;font-size:1.1em;font-weight:600}.member-did{color:#555;word-break:break-all;flex:1;font-family:monospace;font-size:.85em}.member-did a{color:#006994;text-decoration:none}.member-did a:hover{text-decoration:underline}.member-badge{color:#999;white-space:nowrap;font-size:.8em}.chores-page{max-width:1100px;margin:0 auto;padding:1.5rem}.error-banner{color:#c92a2a;background:#ffe3e3;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem}.today-panel{background:#fff;border-radius:12px;margin-bottom:1.5rem;padding:1.5rem;box-shadow:0 2px 12px #0069941a}.today-panel.empty{text-align:center;opacity:.85}.today-panel h2{color:#006994;margin:0 0 1rem}.today-list{margin:0;padding:0;list-style:none}.today-list li{border-bottom:1px solid #e9ecef;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.85rem 0;display:flex}.today-list li:last-child{border-bottom:none}.today-list li.done .today-chore strong{opacity:.6;text-decoration:line-through}.today-chore{flex:1}.today-chore .payout{color:#5c3c00;background:#ffd43b;border-radius:999px;margin-left:.5rem;padding:.1rem .5rem;font-size:.85em;font-weight:600;display:inline-block}.today-chore .assignee{color:#868e96;font-weight:400}.chore-desc{color:#495057;margin:.25rem 0 0;font-size:.9em}.checklist{color:#495057;margin:.5rem 0 0 1.25rem;padding:0;font-size:.85em}.checklist li{border:none;padding:.15rem 0;display:list-item}.today-actions button{white-space:nowrap}.btn-done{color:#fff;cursor:pointer;background:#2f9e44;border:none;border-radius:8px;padding:.6rem 1.25rem;font-size:1rem;font-weight:600}.btn-done:hover:not(:disabled){background:#2b8a3e}.btn-undo{color:#495057;cursor:pointer;background:#fff;border:1px solid #ced4da;border-radius:8px;padding:.5rem 1rem;font-size:.9rem}.btn-undo:hover:not(:disabled){background:#f1f3f5}.btn-claim{color:#fff;cursor:pointer;background:#f08c00;border:none;border-radius:8px;padding:.6rem 1.25rem;font-size:1rem;font-weight:600}.btn-claim:hover:not(:disabled){background:#d97706}button:disabled{opacity:.5;cursor:not-allowed}.month-controls{align-items:center;gap:.75rem;margin:1rem 0 .75rem;display:flex}.month-controls h2{text-align:center;color:#006994;flex:1;margin:0}.month-controls button{color:#006994;cursor:pointer;background:#fff;border:1px solid #cfe2eb;border-radius:8px;padding:.5rem 1rem;font-weight:500}.month-controls button:hover{background:#e7f3f8}.month-controls .today-btn{color:#fff;background:#006994;border-color:#006994}.month-controls .today-btn:hover{background:#00567a}.month-grid{background:#cfe2eb;border-radius:12px;grid-template-columns:repeat(7,1fr);gap:4px;padding:4px;display:grid;overflow:hidden}.dow-header{color:#fff;text-align:center;background:#006994;padding:.5rem 0;font-size:.85em;font-weight:600}.day-cell{cursor:pointer;background:#fff;flex-direction:column;min-height:110px;padding:6px;font-size:.85em;transition:background .1s;display:flex}.day-cell:hover{background:#f8f9fa}.day-cell.out-of-month{opacity:.55;background:#f1f3f5}.day-cell.today{background:#fff9db;box-shadow:inset 0 0 0 2px #f08c00}.day-num{color:#495057;margin-bottom:4px;font-weight:600}.day-pills{flex-direction:column;gap:2px;display:flex;overflow:hidden}.chore-pill{color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding:2px 6px;font-size:.75em;display:block;overflow:hidden}.chore-pill.done{opacity:.55;text-decoration:line-through}.pill-who{opacity:.85;margin-left:4px}.more{color:#868e96;padding-left:4px;font-size:.75em}.modal-backdrop{z-index:100;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:min(540px,90vw);max-height:85vh;padding:1.5rem;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.modal-header h3{color:#006994;margin:0}.modal-close{cursor:pointer;color:#868e96;background:0 0;border:none;padding:0 .5rem;font-size:1.5rem}.modal-close:hover{color:#495057}.day-list{margin:0;padding:0;list-style:none}.day-list li{border-bottom:1px solid #e9ecef;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 0;display:flex}.day-list li.done strong{opacity:.6;text-decoration:line-through}.day-list .payout{color:#5c3c00;background:#ffd43b;border-radius:999px;margin-left:.5rem;padding:.1rem .5rem;font-size:.85em;font-weight:600}.legend{color:#495057;flex-wrap:wrap;gap:1rem;margin-top:1rem;padding:.75rem;font-size:.9em;display:flex}.legend-item{text-transform:capitalize;align-items:center;gap:.4rem;display:inline-flex}.legend-dot{border-radius:50%;width:12px;height:12px;display:inline-block}.gcal-panel{background:#fff;border-left:4px solid #006994;border-radius:12px;margin-bottom:1rem;padding:1rem 1.25rem;box-shadow:0 2px 12px #00699414}.gcal-header{align-items:center;gap:.75rem;display:flex}.gcal-header h3{color:#006994;flex:1;margin:0}.badge{border-radius:999px;padding:.2rem .6rem;font-size:.8em;font-weight:600}.badge.connected{color:#2b8a3e;background:#d3f9d8}.badge.disconnected{color:#c92a2a;background:#ffe3e3}.gcal-meta{color:#868e96;margin:.25rem 0 0;font-size:.85em}.gcal-warn{color:#c92a2a;margin:.5rem 0 0;font-size:.9em}.gcal-actions{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.gcal-actions button{color:#fff;cursor:pointer;background:#006994;border:none;border-radius:8px;padding:.5rem 1rem;font-size:.9rem;font-weight:500}.gcal-actions button:hover:not(:disabled){background:#00567a}.gcal-actions .btn-secondary{color:#495057;background:#fff;border:1px solid #ced4da}.gcal-actions .btn-secondary:hover:not(:disabled){background:#f1f3f5}.gcal-msg{color:#495057;margin:.5rem 0 0;font-size:.9em;font-style:italic}@media (width<=700px){.day-cell{min-height:80px;padding:4px;font-size:.75em}.chore-pill{padding:1px 4px;font-size:.65em}.pill-who{display:none}.today-list li{flex-direction:column;align-items:stretch}}.nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#006994f2;align-items:center;gap:24px;height:56px;padding:0 24px;display:flex}.nav-brand{color:#fff;cursor:pointer;white-space:nowrap;font-size:1.1em;font-weight:700}.nav-links{flex:1;gap:4px;display:flex}.nav-links a{color:#ffffffbf;border-radius:6px;padding:6px 14px;font-size:.95em;text-decoration:none;transition:all .15s}.nav-links a:hover,.nav-links a.active{color:#fff;background:#ffffff26}.logout-btn{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:6px;padding:6px 14px;font-size:.9em;transition:background .15s}.logout-btn:hover{background:#ffffff40}
