:root{--bg: #f4f5f7;--card: #ffffff;--text: #1f2933;--muted: #6b7280;--border: #e2e5ea;--primary: #2563eb;--primary-dark: #1d4ed8;--danger: #dc2626;--success: #16a34a;--radius: 10px;--shadow: 0 1px 3px rgba(0, 0, 0, .08)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}h1,h2,h3{margin:0 0 .75rem}h1{font-size:1.4rem}h2{font-size:1.2rem}h3{font-size:1.05rem}.layout{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.2rem;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.brand{font-weight:700}.topbar nav{display:flex;gap:.25rem;flex:1}.topbar nav a{padding:.4rem .8rem;border-radius:var(--radius);color:var(--muted);text-decoration:none;font-weight:500}.topbar nav a:hover{background:var(--bg)}.topbar nav a.active{color:var(--primary);background:#eff4ff}.topbar-right{display:flex;align-items:center;gap:.75rem}.user-email{color:var(--muted);font-size:.85rem}.content{padding:1.2rem;max-width:1500px;width:100%;margin:0 auto}.narrow{max-width:720px;margin:0 auto}.center-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.btn{border:1px solid var(--border);background:var(--card);color:var(--text);padding:.45rem .9rem;border-radius:var(--radius);cursor:pointer;font-size:.9rem;font-weight:500}.btn:hover{background:var(--bg)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-danger{color:var(--danger);border-color:#f3c1c1}.btn-danger:hover{background:#fdf0f0}.btn-ghost{border:none;background:transparent}.btn-small{padding:.15rem .5rem;font-size:.85rem}.btn:disabled{opacity:.6;cursor:default}label{display:block;margin-bottom:.75rem;font-weight:500;font-size:.9rem}input,textarea,select{display:block;width:100%;margin-top:.25rem;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);font:inherit;background:#fff}input:focus,textarea:focus,select:focus{outline:2px solid var(--primary);outline-offset:-1px}input[type=checkbox]{width:auto;display:inline-block;margin:0;accent-color:var(--success)}.error{color:var(--danger);font-size:.9rem}.hint{color:var(--muted);font-size:.85rem}.auth-card{width:100%;max-width:380px}.auth-links{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:0}.week-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.week-header h2{margin:0}.week-header-actions{display:flex;gap:.5rem}.week-title{border:none;background:none;padding:.3rem .7rem;border-radius:var(--radius);cursor:pointer}.week-title:hover{background:#eff4ff}.week-title:hover h2{color:var(--primary)}.month-overlay{max-width:380px}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.year-select{width:auto;display:inline-block;margin:0}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.2rem}.month-weekday{text-align:center;color:var(--muted);font-size:.75rem;font-weight:600;padding:.25rem 0}.month-day{position:relative;border:1px solid transparent;background:none;font:inherit;padding:.45rem 0;border-radius:8px;cursor:pointer;text-align:center}.month-day:hover{background:#eff4ff;border-color:var(--primary)}.month-day.today{border-color:var(--primary);font-weight:700;color:var(--primary)}.task-dot{position:absolute;bottom:3px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:50%;background:var(--primary)}.recurrence-row{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.recurrence-row label{flex:1;min-width:130px}.recurrence-row label:nth-child(2){flex:0 0 90px;min-width:90px}.recurrence-preview{margin:0 0 .85rem}.board{position:relative;min-height:75vh;border:1px dashed var(--border);border-radius:var(--radius);background:radial-gradient(circle,#d9dde3 1px,transparent 1px) 0 0 / 24px 24px,#fafbfc;overflow:hidden}.note{position:absolute;width:230px;min-height:150px;background:#fef9c3;border:1px solid #fde047;border-radius:6px;box-shadow:0 3px 8px #0000001f;padding:1.4rem .6rem .6rem;cursor:grab;touch-action:none;transition:box-shadow .12s ease}.note:hover{box-shadow:0 6px 14px #0003}.note:active{cursor:grabbing}.note textarea{width:100%;height:120px;border:none;background:transparent;resize:none;font:inherit;font-size:.9rem;margin:0;padding:0}.note textarea:focus{outline:none}.note-del{position:absolute;top:4px;right:4px;border:none;background:none;color:#a16207;cursor:pointer;font-size:.8rem;opacity:0;transition:opacity .12s ease}.note:hover .note-del{opacity:1}.note-del:hover{color:var(--danger)}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(170px,1fr));gap:.75rem}@media (max-width: 1300px){.week-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 900px){.week-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 550px){.week-grid{grid-template-columns:1fr}}.day-tile{padding:1rem;min-height:230px;transition:box-shadow .15s ease}.day-tile.today{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.day-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem}.day-date{display:block;color:var(--muted);font-size:.78rem}.task-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.task{display:flex;align-items:baseline;gap:.5rem;padding:.4rem .5rem;border:1px solid transparent;border-radius:8px;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.task:hover{background:#eff4ff;border-color:var(--primary);box-shadow:0 2px 6px #2563eb26}.task-title{border:none;background:none;padding:0;font:inherit;cursor:pointer;text-align:left;color:var(--text);flex:1}.task-title:hover{color:var(--primary)}.task.done .task-title{text-decoration:line-through;color:var(--muted)}.empty{color:var(--border)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:4rem 1rem 1rem;z-index:100;overflow-y:auto}.modal{width:100%;max-width:480px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.modal-actions .btn-danger{margin-right:auto}.checklist{border-top:1px solid var(--border);padding-top:.6rem;margin-top:.6rem}.checklist ul{list-style:none;margin:0;padding:0}.checklist-head{font-weight:600;font-size:.9rem;margin:0 0 .4rem}.check-row{display:flex;align-items:baseline;gap:.5rem;font-weight:400;margin-bottom:.3rem}.check-row .done{text-decoration:line-through;color:var(--muted)}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.template-list{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}.template-item{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.template-item .hint{margin:.25rem 0 0}.template-actions{display:flex;gap:.4rem;flex-shrink:0}.template-form{margin-bottom:1rem}.item-row{display:flex;gap:.35rem;margin-bottom:.4rem;align-items:center}.overdue-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.overdue-item{display:flex;gap:.75rem;align-items:baseline}.overdue-item div{flex:1}.task-desc{margin:.2rem 0 0;color:var(--muted);font-size:.85rem}.overdue-date{color:var(--danger);font-size:.85rem;white-space:nowrap}.task[draggable=true]{cursor:grab}.day-tile.drag-over{border-color:var(--primary);background:#eff4ff;box-shadow:0 0 0 2px var(--primary)}.move-dialog{max-width:400px}.move-dialog .check-row{margin-bottom:.5rem}input[type=radio]{width:auto;display:inline-block;margin:0;accent-color:var(--primary)}.admin-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.admin-table th,.admin-table td{text-align:left;padding:.55rem .75rem;border-bottom:1px solid var(--border);font-size:.9rem}.admin-table th{color:var(--muted);font-weight:600}.admin-table tr:last-child td{border-bottom:none}.badge{display:inline-block;margin-left:.4rem;padding:.1rem .45rem;border-radius:999px;background:#fef3c7;color:#92400e;font-size:.72rem;font-weight:600}.reg-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.reg-card .hint{margin:.25rem 0 0}.reg-card.reg-open{border-color:#f3c1c1}.reg-card.reg-closed{border-color:var(--success)}.reg-card .btn{flex-shrink:0}.otp-card{margin-bottom:1rem;border-color:var(--primary)}.otp-value{display:flex;align-items:center;gap:.6rem}.otp-value code{font-size:1.15rem;background:var(--bg);padding:.3rem .6rem;border-radius:var(--radius);border:1px solid var(--border);-webkit-user-select:all;user-select:all}.settings-card{margin-bottom:1rem}.qr{display:block;margin:.5rem 0;border:1px solid var(--border);border-radius:var(--radius)}
