:root{color-scheme:light;--bg: #f4f6f8;--bg-soft: #f1f5f9;--surface: #ffffff;--surface-2: #f8fafc;--text: #1f2430;--muted: #6b7280;--hint: #8e99a8;--accent: #3b82f6;--accent-dark: #2563eb;--accent-soft: #eff6ff;--accent-text: #1e40af;--green: #16a34a;--amber: #d97706;--red: #dc2626;--red-soft: #fef2f2;--border: #e2e8f0;--border-strong: #cbd5e1;--track: #eef2f7;--scrim: rgba(0, 0, 0, .55);--radius: 12px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--shadow-pop: 0 4px 12px rgba(0, 0, 0, .12);--badge-indigo-bg: #eef2ff;--badge-indigo-fg: #4338ca;--badge-green-bg: #dcfce7;--badge-green-fg: #166534;--badge-amber-bg: #fef3c7;--badge-amber-fg: #92400e;--badge-red-bg: #fee2e2;--badge-red-fg: #991b1b;--on-accent: #ffffff}:root[data-theme=dark]{color-scheme:dark;--bg: #12151b;--bg-soft: #1c212a;--surface: #1a1f27;--surface-2: #20262f;--text: #e7ebf0;--muted: #98a2b3;--hint: #6f7a8c;--accent: #4d8ff0;--accent-dark: #6ea3f5;--accent-soft: #1b2a41;--accent-text: #9dc4f8;--green: #34c17b;--amber: #e0a33a;--red: #e5645f;--red-soft: #34191a;--border: #2c333f;--border-strong: #47515f;--track: #262d38;--scrim: rgba(0, 0, 0, .65);--shadow: 0 1px 3px rgba(0, 0, 0, .5);--shadow-pop: 0 4px 12px rgba(0, 0, 0, .6);--badge-indigo-bg: #262a4a;--badge-indigo-fg: #b9c0f0;--badge-green-bg: #16301f;--badge-green-fg: #7fd6a2;--badge-amber-bg: #33270e;--badge-amber-fg: #ecc06a;--badge-red-bg: #3a1c1c;--badge-red-fg: #f0a09c;--on-accent: #0d1117}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100svh;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent)}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:.45rem .9rem;transition:background .12s ease,border-color .12s ease}button:hover{background:var(--bg-soft)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}button.primary:hover{background:var(--accent-dark)}button.danger{color:var(--red);border-color:var(--border)}button.danger:hover{background:var(--red-soft)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit;padding:.45rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.field{position:relative}.field>.field-icon{position:absolute;left:.65rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.field>input{width:100%;padding-left:2.2rem}.pfield-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--muted);display:flex;align-items:center;padding:.25rem;z-index:1}.pfield-toggle:hover{color:var(--text)}.list-logo{border-radius:4px;object-fit:contain;background:var(--surface);flex-shrink:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem;min-width:0}.muted{color:var(--muted)}.small{font-size:.85rem}.row{display:flex;align-items:center;gap:.5rem}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--accent);color:var(--on-accent);display:inline-flex;align-items:center;justify-content:center;font-weight:600}.avatar.lg{width:56px;height:56px;font-size:1.2rem}.avatar.sm{width:28px;height:28px;font-size:.8rem}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--badge-indigo-bg);color:var(--badge-indigo-fg)}.badge.green{background:var(--badge-green-bg);color:var(--badge-green-fg)}.badge.amber{background:var(--badge-amber-bg);color:var(--badge-amber-fg)}.badge.red{background:var(--badge-red-bg);color:var(--badge-red-fg)}.member-pick{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 8px;border-radius:10px;border:1px solid transparent;background:transparent;cursor:pointer;min-width:60px}.member-pick .avatar{width:44px;height:44px;font-size:1rem}.member-pick:hover{background:var(--bg-soft)}.member-pick.active{border-color:var(--accent);background:var(--accent-soft)}.member-pick .member-name{font-size:.72rem;color:var(--muted)}.view-toggle{display:inline-flex;gap:2px;padding:2px;border-radius:8px;background:var(--bg-soft)}.view-toggle button{border:1px solid transparent;background:none;padding:.35rem .8rem;border-radius:6px;font-size:.85rem;font-weight:600;color:var(--muted);cursor:pointer}.view-toggle button:hover{color:var(--text)}.view-toggle button.active{background:var(--surface);border-color:var(--accent);color:var(--text);box-shadow:var(--shadow)}.avatar-wrap{position:relative;display:inline-flex}.avatar-badge{position:absolute;right:-4px;bottom:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:700;line-height:1;background:var(--red);color:var(--on-accent);box-shadow:0 0 0 2px var(--surface)}.avatar-badge.green{background:var(--green);color:var(--on-accent);min-width:20px;height:20px;font-size:.72rem}.chip{display:inline-flex;align-items:center;gap:.3rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.15rem .4rem .15rem .2rem;font-size:.8rem;font-weight:600}.chip .avatar.sm{width:22px;height:22px;font-size:.7rem}.chip-x{border:none;background:transparent;cursor:pointer;color:var(--muted);font-size:.75rem;line-height:1;padding:2px 4px;border-radius:50%}.chip-x:hover{background:var(--border);color:var(--text)}.assign-add{border-radius:999px;padding:.2rem .55rem;font-size:.8rem}.check{width:26px;height:26px;accent-color:var(--green);cursor:pointer}.kid .check{width:44px;height:44px}.nav{display:flex;align-items:center;gap:.35rem;padding:.7rem 1rem;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;position:sticky;top:0;z-index:30}.nav .title{font-weight:700;font-size:1.7rem;margin-right:.75rem;gap:10px}.nav-modules{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center}.nav-actions{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:.35rem}.nav button.navlink{border:none;background:transparent;padding:.4rem;border-radius:8px;display:flex;align-items:center;justify-content:center;position:relative}.nav button.navlink.active:after{content:"";position:absolute;left:15%;right:15%;bottom:2px;height:3px;border-radius:2px;background:var(--accent)}.nav button.navlink:hover{background:var(--bg-soft)}.nav button.navlink.active{background:var(--accent-soft);color:var(--accent-text)}.nav .nav-badge{position:absolute;bottom:2px;right:2px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--red);color:var(--on-accent);font-size:.72rem;font-weight:700;pointer-events:none;z-index:1}.nav .spacer{flex:1}.kiosk{display:flex;flex-direction:column;height:100vh;height:100svh;overflow:hidden}.kiosk-body{display:flex;flex:1;min-height:0;overflow:hidden}.kiosk-side{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.75rem;background:var(--surface);border-right:1px solid var(--border);width:112px;overflow-y:auto}.kiosk-family,.kiosk-member{display:flex;flex-direction:column;align-items:center;gap:4px;background:transparent;border:none;border-radius:10px;padding:.4rem .25rem;cursor:pointer;width:100%}.kiosk-family:hover,.kiosk-member:hover{background:var(--bg-soft)}.kiosk-family.active,.kiosk-member.active{background:var(--accent);color:var(--on-accent);box-shadow:0 2px 10px #2563eb59}.kiosk-family.active .kiosk-name,.kiosk-member.active .kiosk-name{color:var(--on-accent)}.kiosk-member.active .avatar{outline:2px solid var(--on-accent);outline-offset:2px}.kiosk-family.active .avatar{background:var(--surface);color:var(--accent)}.kiosk-avatar{width:44px;height:44px}.kiosk-name{font-size:.72rem;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.kiosk-main{flex:1;min-width:0;min-height:0;overflow-y:auto}.login-wrap{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;gap:3rem;flex-wrap:wrap;padding:1rem}.login-brand{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:320px}.login-brand h1{margin:0;font-size:4rem;line-height:1;font-weight:800;white-space:nowrap}.login-brand h1 .clan{color:var(--accent-text)}.login-brand h1 .board{color:var(--accent)}.clan{color:var(--accent-text)}.board{color:var(--accent)}.login-brand .login-tagline{margin:.25rem 0 0;color:var(--muted);font-size:1.35rem}.login-card{width:100%;max-width:360px}@media (max-width: 768px){.login-wrap{flex-direction:column;justify-content:safe center;align-items:center;gap:2rem;padding:1rem 1rem 2rem}.login-card{margin-top:0}.nav{padding-left:.5rem}.nav .title{gap:4px}.nav-modules{order:2;flex-basis:100%}.nav-actions{order:1}.hide-narrow{display:none}}.weather-strip{display:flex;gap:1.25rem}.weather-day{flex:1;min-width:0;text-align:center;padding:.4rem 0}.weather-icon{font-size:1.6rem;line-height:1;height:2.2rem;display:flex;align-items:center;justify-content:center}.child-progress{display:grid;grid-template-columns:44px 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:.75rem;row-gap:2px;padding:.5rem 0;border-bottom:1px solid var(--border)}.child-progress:last-child{border-bottom:none}.child-progress .child-avatar{grid-row:1 / span 2}.child-progress .child-meta{align-self:start}.child-progress .child-tasks{align-self:start;padding-top:2px;min-width:0}.child-progress .progress-track{grid-column:2 / -1}.child-progress.clickable{cursor:pointer}.child-progress.clickable:hover{background:var(--bg-soft)}@media (hover: none){.child-progress.clickable:hover{background:none}}.row.clickable{cursor:pointer}.row.clickable:hover{background:var(--bg-soft)}@media (hover: none){.row.clickable:hover{background:none}}.nav-user{position:relative;display:inline-flex}.nav-avatar-btn{border:none;background:none;border-radius:50%;padding:2px;display:inline-flex;cursor:pointer}.nav-avatar-btn:hover{background:var(--bg-soft)}.nav-avatar-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.profile-menu{top:calc(100% + 6px);right:0;min-width:175px}.profile-menu button{display:flex;align-items:center;gap:.5rem}.profile-form{max-width:560px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:.4rem;border:none;background:transparent;border-radius:8px;color:var(--muted);cursor:pointer}.icon-btn:hover{background:var(--bg-soft);color:var(--text)}.icon-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.list-menu{position:absolute;top:110%;right:0;z-index:41;min-width:150px;padding:.4rem;box-shadow:var(--shadow-pop)}.list-menu button{width:100%;text-align:left;padding:.4rem .6rem;background:none;border:none;border-radius:6px;cursor:pointer}.list-menu button:hover{background:var(--bg-soft)}.list-menu button.danger:hover{background:var(--red-soft)}.item-menu{max-height:60vh;overflow-y:auto;min-width:180px}.task-menu{min-width:150px}.wco-fill{padding-top:env(titlebar-area-height,0px)}.title-bar{position:fixed;z-index:1000;top:env(titlebar-area-y,0);left:env(titlebar-area-x,0);width:env(titlebar-area-width,100%);height:env(titlebar-area-height,32px);display:flex;align-items:center;justify-content:flex-end;padding:0 4px;box-sizing:border-box;-webkit-app-region:drag;-webkit-user-select:none;user-select:none}.title-bar button{-webkit-app-region:no-drag}.title-bar-refresh{background:none;border:none;color:var(--muted);cursor:pointer;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px}.title-bar-refresh:hover{background:var(--bg-soft);color:var(--text)}@keyframes titlebar-spin{to{transform:rotate(360deg)}}.title-bar-refresh .spin{animation:titlebar-spin .6s linear}.login-wrap{padding-top:env(titlebar-area-height,1rem)}.progress-track{height:10px;border-radius:999px;background:var(--track);overflow:hidden}.progress-fill{height:100%;background:var(--green);border-radius:999px;transition:width .3s ease}.meal-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;margin:0 -1rem}.meal-grid{display:grid;grid-template-rows:30px repeat(4,auto);grid-auto-flow:row;grid-template-columns:92px repeat(7,minmax(110px,1fr));gap:.5rem}.meal-corner{position:sticky;left:0;z-index:1;background:var(--bg)}.meal-day-head{font-weight:700;line-height:30px;white-space:nowrap;display:flex;align-items:center;gap:.25rem}.meal-day-head span{color:var(--muted);font-size:.75rem}.meal-day-head.today{color:var(--accent-dark)}.meal-day-head em{font-style:normal;font-size:.65rem;font-weight:600;color:var(--on-accent);background:var(--green);border-radius:999px;padding:1px 6px}.meal-slot-label{position:sticky;left:0;z-index:1;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;font-size:.75rem;color:var(--text);font-weight:600;line-height:1}.meal-slot textarea{width:100%;resize:none;overflow:hidden;line-height:1.35;font-size:.9rem;height:auto;min-height:88px}.meal-slot textarea::placeholder{color:var(--hint);font-style:italic;opacity:1}.cal-day{border:1px solid var(--border);border-radius:8px;padding:.5rem;min-height:90px}.cal-evt{padding:2px 6px;border-radius:6px;font-size:.78rem;margin:3px 0;background:var(--accent-soft);color:var(--accent-text);overflow:hidden}.cal-schedule{display:grid;gap:.75rem}.cal-sched-day{border:1px solid var(--border);border-radius:8px;padding:.6rem .8rem}.cal-sched-evt{display:flex;align-items:center;gap:.5rem;padding:.2rem 0;min-width:0}.cal-sched-evt .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cal-sched-evt .time{font-size:.8rem;color:var(--muted);white-space:nowrap;min-width:3.2rem}.member-form{display:grid;gap:.75rem}.form-grid{display:grid;gap:.75rem;grid-template-columns:minmax(0,1fr);align-items:start}@media (min-width: 900px){.form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.form-section.form-role{grid-column:1;grid-row:2}.form-section.form-signin{grid-column:2;grid-row:1}}.form-section{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.7rem .8rem;display:grid;gap:.6rem;min-width:0}.form-legend{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.form-field{display:grid;gap:.25rem;min-width:0}.form-field>label:not(.switch){font-size:.8rem;font-weight:600;color:var(--muted)}.form-field input,.form-field select,.form-field .field{width:100%}.form-hint{font-size:.78rem;color:var(--muted)}.identity-row{display:flex;align-items:flex-start;gap:.8rem}.identity-fields{display:grid;gap:.55rem;flex:1;min-width:0}.identity-photo{position:relative;display:grid;justify-items:center;gap:.3rem}.identity-photo .avatar{width:72px;height:72px;font-size:1.5rem}.identity-photo>button{display:inline-flex;align-items:center;gap:.2rem;padding:.3rem .5rem}.photo-menu{top:calc(100% + 4px);left:0;right:auto;min-width:175px}.photo-menu button{display:flex;align-items:center;gap:.5rem}.switch{display:inline-flex;align-items:center;gap:.55rem;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch-track{position:relative;width:44px;height:26px;border-radius:999px;background:var(--border-strong);transition:background .15s ease;flex-shrink:0}.switch-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px #00000040;transition:transform .15s ease}.switch input:checked+.switch-track{background:var(--accent)}.switch input:checked+.switch-track .switch-thumb{transform:translate(18px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--accent);outline-offset:2px}.switch-label{font-weight:600}.advanced{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.55rem .8rem}.advanced>summary{display:flex;align-items:center;gap:.4rem;cursor:pointer;list-style:none}.advanced>summary::-webkit-details-marker{display:none}.advanced>summary:before{content:"▸";color:var(--muted);font-size:.8rem;transition:transform .15s ease}.advanced[open]>summary:before{transform:rotate(90deg)}.advanced-body{display:grid;gap:.55rem;padding-top:.65rem;max-width:24rem}.form-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.form-actions .spacer{flex:1}
