:root{color:#171724;background:#f5f6fa;font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;font-synthesis:none;--color-primary: #5b3ff0;--color-primary-hover: #4930d8;--color-primary-soft: #f0edff;--color-success: #15803d;--color-success-soft: #ecfdf3;--color-warning: #a15c00;--color-warning-soft: #fff8e6;--color-danger: #b42318;--color-danger-soft: #fff1f0;--color-text: #171724;--color-muted: #71717f;--color-border: #e1e3ea;--color-surface: #ffffff;--color-canvas: #f5f6fa;--shadow-card: 0 1px 3px rgba(24, 24, 39, .06);--radius: 8px}*{box-sizing:border-box}html{min-width:0;background:var(--color-canvas)}body{min-width:0;min-height:100vh;margin:0;background:var(--color-canvas);color:var(--color-text);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:240px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"sidebar workspace" "sidebar footer";min-height:100vh;transition:grid-template-columns .18s ease}.app-shell.is-sidebar-collapsed{grid-template-columns:72px minmax(0,1fr)}.app-shell.auth-shell{min-width:0;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"workspace" "footer";background:#f5f6fa}.auth-shell>#main-content{display:grid;width:100%;place-items:center;padding:40px}.sidebar-shell{grid-area:sidebar;position:sticky;top:0;z-index:20;height:100vh;border-right:1px solid var(--color-border);background:var(--color-surface);overflow:hidden}.side-nav{display:flex;width:240px;height:100%;flex-direction:column;background:var(--color-surface);transition:width .18s ease}.is-sidebar-collapsed .side-nav{width:72px}.brand-lockup{display:flex;min-height:72px;align-items:center;gap:11px;border-bottom:1px solid var(--color-border);padding:0 16px;white-space:nowrap}.brand-mark{display:block;width:40px;height:40px;flex:0 0 40px}.brand-copy,.sidebar-user>span{display:grid;min-width:0}.brand-copy strong{font-size:14px}.brand-copy small,.sidebar-user small{color:var(--color-muted);font-size:12px}.side-nav-scroll{flex:1;overflow-x:hidden;overflow-y:auto;padding:12px 10px 18px;scrollbar-width:thin}.nav-group{margin-bottom:14px}.nav-group h2{margin:0 10px 5px;color:#9999a7;font-size:11px;font-weight:600;letter-spacing:.06em}.nav-group a{display:flex;min-height:40px;align-items:center;gap:11px;margin:2px 0;border-radius:var(--radius);color:#555565;padding:9px 11px;white-space:nowrap}.nav-group a svg{flex:0 0 auto}.nav-group a:hover{background:#f5f5f8;color:var(--color-text)}.nav-group a.router-link-active{background:var(--color-primary-soft);color:var(--color-primary);font-weight:700}.sidebar-user{display:flex;min-height:64px;align-items:center;gap:11px;border-top:1px solid var(--color-border);padding:10px 20px;white-space:nowrap}.is-sidebar-collapsed .brand-copy,.is-sidebar-collapsed .nav-group h2,.is-sidebar-collapsed .nav-group a span,.is-sidebar-collapsed .sidebar-user>span{display:none}.is-sidebar-collapsed .brand-lockup{padding:0 16px}.is-sidebar-collapsed .side-nav-scroll{padding-inline:10px}.is-sidebar-collapsed .nav-group a,.is-sidebar-collapsed .sidebar-user{justify-content:center;padding-inline:0}.workspace-shell{min-width:0;grid-area:workspace}.top-bar{position:sticky;top:0;z-index:15;display:flex;min-height:72px;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--color-border);background:#fffffffa;padding:0 24px}.top-bar-title,.top-bar-actions{display:flex;align-items:center;gap:14px}.top-bar-title>div{display:grid}.top-bar-title strong{font-size:17px;line-height:1.35}.top-bar-title span{color:var(--color-muted);font-size:12px}.top-bar-actions time{color:#626270;font-family:SFMono-Regular,Consolas,monospace;font-size:12px}.icon-button,.logout-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;background:transparent;color:#4f4f5d;min-height:44px}.icon-button{width:44px;min-width:44px;padding:0}.icon-button:hover,.logout-button:hover{background:#f2f2f6;color:var(--color-text)}#main-content{min-width:0;grid-area:workspace;outline:none}.app-footer{grid-area:footer;min-height:48px;border-top:1px solid var(--color-border);color:var(--color-muted);font-size:12px;padding:14px 24px;text-align:center}.app-footer a{text-decoration:underline;text-underline-offset:3px}.page{width:calc(100% - 48px);min-height:calc(100vh - 120px);margin:24px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface);box-shadow:var(--shadow-card);padding:24px}.page.parent-dashboard{max-width:none}.section-label{margin:0 0 6px;color:var(--color-primary);font-size:12px;font-weight:700}h1{margin:0 0 22px;font-size:24px;line-height:1.3}h2{margin:28px 0 14px;font-size:17px;line-height:1.35}h3{font-size:15px}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.page-heading h1,.page-heading h2{margin:0 0 5px}.page-heading p{margin:0}.page-card,.auth-panel,.profile-panel,.rule-panel,.rule-card,.weekly-report{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-card);padding:20px}.page-card{margin-top:18px}.page-card.flush{padding:0;overflow:hidden}.auth-page{width:min(440px,100%)}.auth-panel{padding:32px}.auth-brand-icon{display:block;width:88px;height:88px;margin-bottom:24px}form{display:grid;gap:14px}.form-section{display:grid;gap:14px;border-bottom:1px solid var(--color-border);padding:2px 0 22px}.form-section:last-of-type{border-bottom:0}.form-section h2{margin:0;font-size:15px}.form-section>p{margin:-8px 0 0}label{display:grid;gap:6px;color:#555565;font-size:13px;font-weight:600}input,select,textarea,output{width:100%;min-height:40px;border:1px solid #d5d7e0;border-radius:6px;background:#fff;color:var(--color-text);padding:8px 11px}input::placeholder,textarea::placeholder{color:#aaaab6}textarea{min-height:88px;resize:vertical}input:hover,select:hover,textarea:hover{border-color:#bfc1cd}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);outline:2px solid rgba(91,63,240,.12)}button,.button-link{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:7px;border:1px solid var(--color-primary);border-radius:6px;background:var(--color-primary);color:#fff;cursor:pointer;font-weight:650;padding:0 15px;white-space:nowrap;transition:background .15s ease,border-color .15s ease,transform .15s ease}button:hover,.button-link:hover{border-color:var(--color-primary-hover);background:var(--color-primary-hover)}button:active,.button-link:active{transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.58}.secondary,.button-link.secondary{border-color:var(--color-border);background:#fff;color:#4f4f5d}.secondary:hover,.button-link.secondary:hover{border-color:#c5c7d0;background:#f7f7f9}.danger{border-color:var(--color-danger);background:var(--color-danger)}.danger:hover{border-color:#962017;background:#962017}:where(a,button,input,select,textarea):focus-visible{outline:3px solid rgba(91,63,240,.32);outline-offset:2px}.skip-link{position:fixed;top:8px;left:8px;z-index:100;min-height:40px;border-radius:6px;background:#fff;color:var(--color-primary);padding:10px 14px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.form-grid,.filter-bar{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:12px}.filter-bar{align-items:end;margin:16px 0;border:1px solid var(--color-border);border-radius:var(--radius);background:#fafafd;padding:14px}.filter-bar button{align-self:end}.management-form{gap:20px;margin-bottom:0}fieldset{display:flex;flex-wrap:wrap;gap:16px;border:1px solid var(--color-border);border-radius:7px;padding:14px}legend{color:#555565;font-weight:700;padding:0 6px}fieldset label,.toggle-label{display:flex;flex-direction:row;align-items:center;gap:7px}fieldset input,.toggle-label input{width:18px;min-height:18px;padding:0}.row-actions,.pagination-actions{display:flex;align-items:center;gap:10px}.row-actions{margin-top:14px}.row-actions.wrap,.pagination-actions{flex-wrap:wrap}.pagination-actions{justify-content:flex-end;margin-top:18px;color:var(--color-muted)}.data-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius)}.data-table{width:100%;min-width:760px;border-collapse:collapse;background:#fff;font-size:13px}.data-table th,.data-table td{border-bottom:1px solid var(--color-border);padding:12px 14px;text-align:left;vertical-align:middle}.data-table th{background:#fafafd;color:#666675;font-size:12px;font-weight:700;white-space:nowrap}.data-table tbody tr:hover{background:#fafafd}.data-table tbody tr:last-child td{border-bottom:0}.data-table .numeric{font-family:SFMono-Regular,Consolas,monospace;font-variant-numeric:tabular-nums}.data-table .actions{position:sticky;right:0;background:inherit;text-align:right;white-space:nowrap}.data-table .actions .button-link,.data-table .actions button{min-height:34px;padding-inline:11px}.table-actions{display:flex;justify-content:flex-end;gap:6px}.table-person{display:inline-flex;align-items:center;gap:9px;white-space:nowrap}.status-badge{display:inline-flex;min-height:24px;align-items:center;border-radius:999px;background:#f0f0f4;color:#5f5f6d;font-size:12px;font-weight:700;padding:2px 9px}.status-badge.success{background:var(--color-success-soft);color:var(--color-success)}.status-badge.warning{background:var(--color-warning-soft);color:var(--color-warning)}.status-badge.danger{background:var(--color-danger-soft);color:var(--color-danger)}.status-badge.primary{background:var(--color-primary-soft);color:var(--color-primary)}.todo-grid,.parent-todo-grid,.metric-grid,.hard-limit-grid,.weekly-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.parent-todo-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.todo-grid>div,.parent-todo-grid a,.metric-grid article,.hard-limit-grid article,.dashboard-child-metrics a{display:grid;gap:5px;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;padding:16px}.parent-todo-grid a:hover,.dashboard-child-metrics a:hover{border-color:#5b3ff066;background:#fcfbff}.parent-todo-grid strong,.todo-grid strong{font-family:SFMono-Regular,Consolas,monospace;font-size:26px}.todo-grid span,.parent-todo-grid span,.metric-grid span,.dashboard-child-metrics span,.work-list span,.rule-list dd{color:var(--color-muted)}.parent-todo-grid .urgent-card{border-color:#f0cf88;background:var(--color-warning-soft)}.dashboard-error{display:flex;align-items:center;gap:12px;margin:16px 0}.dashboard-error p{margin:0}.dashboard-section-heading{display:flex;align-items:baseline;justify-content:space-between;margin-top:26px}.dashboard-section-heading h2{margin:0 0 14px}.dashboard-child-list,.child-list,.work-list{display:grid;gap:10px}.dashboard-child-card,.child-row,.work-list article,.template-list article{border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;padding:16px}.dashboard-child-heading{display:flex;align-items:center;gap:12px;margin-bottom:14px}.dashboard-child-heading h2{flex:1;margin:0}.dashboard-child-heading>span:last-child{color:var(--color-primary);font-size:12px;font-weight:700}.dashboard-child-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.dashboard-child-metrics strong{font-size:14px}.child-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px}.child-row strong,.child-row small,.work-list strong,.work-list span{display:block}.child-row small{margin-top:3px;color:var(--color-muted)}.child-avatar{display:grid;width:40px;height:40px;place-items:center;border-radius:8px;background:var(--color-primary-soft);color:var(--color-primary);font-weight:800}.profile-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.pin-reset-panel{align-self:start;gap:16px;border-color:#ead3d1;background:snow;box-shadow:none;padding:18px}.pin-reset-heading{display:flex;align-items:flex-start;gap:10px}.pin-reset-heading strong{display:block;color:var(--color-text);font-size:14px}.pin-reset-heading p{margin:3px 0 0;color:var(--color-muted);font-size:12px;line-height:1.5}.pin-reset-icon{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border-radius:7px;background:var(--color-danger-soft);color:var(--color-danger)}.pin-reset-panel label{margin-top:0}.pin-reset-panel button{min-height:44px}.profile-panel.metrics{display:grid;grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.profile-panel.metrics span{border-radius:6px;background:#f7f7fa;color:#3f3f4b;font-weight:700;padding:12px}.ledger-links{grid-column:1 / -1}.child-create-form{margin-top:22px}.child-create-form h2,.task-detail-panel h2{margin-top:0}.inline-form,.rule-editor{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:18px 0}.inline-form label,.rule-editor label{min-width:150px;flex:1}.screen-time-reminder,.stale-warning{border:1px solid #f0cf88;border-radius:var(--radius);background:var(--color-warning-soft);padding:14px}.empty-panel{border:1px dashed #cfd1db;border-radius:var(--radius);background:#fafafd;padding:18px;color:var(--color-muted)}.rule-tabs{display:flex;gap:24px;margin:-6px 0 22px;border-bottom:1px solid var(--color-border)}.rule-tabs a{border-bottom:2px solid transparent;color:var(--color-muted);font-weight:700;padding:10px 0}.rule-tabs a.router-link-exact-active{border-color:var(--color-primary);color:var(--color-primary)}.rules-page>form:not(.filter-bar),.rules-page>.rule-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;padding:18px}.security-form{width:min(520px,100%)}.side-drawer label{margin-top:14px}.paged-child-select{position:relative;width:100%;min-width:0}.paged-child-select.is-open{z-index:45}.paged-child-select__trigger{width:100%;min-height:44px;justify-content:space-between;border:1px solid var(--color-border);border-radius:6px;background:#fff;color:var(--color-text);font-weight:500;padding:0 12px;text-align:left}.paged-child-select__trigger:hover{border-color:#a99cf8;background:#fff}.paged-child-select__trigger:focus-visible,.paged-child-select.is-open .paged-child-select__trigger{border-color:var(--color-primary);box-shadow:0 0 0 3px #5b3ff021;outline:none}.paged-child-select__trigger svg{flex:none;transition:transform .16s ease}.paged-child-select.is-open .paged-child-select__trigger svg{transform:rotate(180deg)}.paged-child-select__native{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.paged-child-select__popover{position:absolute;top:calc(100% + 5px);right:0;left:0;z-index:46;overflow:hidden;border:1px solid var(--color-border);border-radius:8px;background:#fff;box-shadow:0 14px 34px #22203829}.paged-child-select__options{max-height:264px;overflow-y:auto;overscroll-behavior:contain;padding:6px}.paged-child-select__option{display:block;width:100%;min-height:44px;border:0;border-radius:5px;background:#fff;color:var(--color-text);font-weight:500;padding:9px 11px;text-align:left}.paged-child-select__option:hover,.paged-child-select__option.active{background:#f4f1ff;color:var(--color-primary)}.paged-child-select__option.selected{background:var(--color-primary-soft);color:var(--color-primary);font-weight:700}.paged-child-select__empty{margin:0;color:var(--color-muted);padding:14px 11px;text-align:center}.paged-child-select__footer{border-top:1px solid var(--color-border);background:#fff;padding:8px}.paged-child-select__footer button{width:100%;min-height:44px;border:1px dashed #8e7bf6;border-radius:6px;background:#fff;color:var(--color-primary);font-weight:700}.paged-child-select__footer button:hover:not(:disabled){background:var(--color-primary-soft)}.paged-child-select__footer .danger-text{border-color:#e9a8a8;color:var(--color-danger)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.state-notice{display:flex;max-width:760px;align-items:center;gap:10px;margin:14px 0;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;padding:14px}.state-notice span{flex:1}.state-error,.state-forbidden{border-color:#efb4b0;background:var(--color-danger-soft);color:var(--color-danger)}.state-success{border-color:#a7d9b8;background:var(--color-success-soft);color:var(--color-success)}.form-error{margin:0;color:var(--color-danger);font-weight:700}.form-success{margin:0;color:var(--color-success);font-weight:700}.muted{color:var(--color-muted)}.confirm-dialog,.side-drawer{border:0;background:#fff;color:var(--color-text);box-shadow:0 24px 70px #1818273d}.side-drawer .page{width:100%;min-height:0;margin:0;border:0;box-shadow:none;padding:0}.side-drawer .page>.section-label{display:none}.confirm-dialog{width:min(440px,calc(100vw - 48px));border-radius:12px;padding:24px}.confirm-dialog::backdrop,.side-drawer::backdrop{background:#1818277a}.confirm-dialog h2{margin:0 0 10px}.confirm-dialog p{line-height:1.65}.side-drawer{width:min(560px,72vw);max-width:none;height:100vh;max-height:none;margin:0 0 0 auto;border-left:1px solid var(--color-border);padding:0}.side-drawer[open]{animation:drawer-in .18s ease-out}.drawer-header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border);background:#fff;padding:18px 20px}.drawer-header h2{margin:0}.drawer-body{padding:20px}@keyframes drawer-in{0%{transform:translate(24px);opacity:.7}to{transform:translate(0);opacity:1}}.rule-list,.rules-page,.rule-card-grid,.credit-rule-list{display:grid;gap:14px}.rule-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.rule-list{margin:0}.rule-list div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--color-border);padding:12px 0}.rule-list dt,.rule-list dd{margin:0}.hard-limit-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hard-limit-grid strong,.hard-limit-grid span,.rule-card-heading strong,.rule-card-heading span{display:block}.hard-limit-grid span,.rule-card-heading span,.scope-notice{color:var(--color-muted)}.rule-card-heading{display:flex;justify-content:space-between;gap:16px;margin-bottom:14px}.rule-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}.rule-fields output{background:#f7f7fa}.scope-notice{margin:0;border-left:3px solid var(--color-primary);padding-left:12px}.weekly-history-layout{display:grid;grid-template-columns:minmax(230px,.7fr) minmax(0,2.3fr);align-items:start;gap:18px}.weekly-history-list,.weekly-history-detail{display:grid;gap:10px}.weekly-history-item{display:grid;width:100%;gap:5px;border-color:var(--color-border);background:#fff;color:#474754;text-align:left}.weekly-history-item span{color:var(--color-muted);font-size:12px}.weekly-history-item.active{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary)}.weekly-report{padding:20px}.weekly-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.weekly-breakdown p{display:flex;flex-wrap:wrap;gap:8px}.weekly-breakdown p span{border-radius:999px;background:#f2f2f7;padding:6px 10px}.weekly-retrospective{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.weekly-retrospective section{border:1px solid var(--color-border);border-radius:var(--radius);background:#fafafd;padding:14px}.weekly-retrospective h3,.weekly-retrospective ul{margin-top:0}.weekly-comment{margin-top:16px}.child-selector{width:min(320px,100%)}.security-form{display:grid;max-width:560px;gap:16px}.password-rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0;color:var(--color-muted)}.password-rules .met{color:var(--color-success);font-weight:700}.evidence-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:14px}.evidence-card img,.evidence-card video{display:block;max-width:100%;max-height:360px;margin:10px 0;border-radius:6px}.evidence-card audio{width:100%;margin:10px 0}@media (max-width: 1180px){.parent-todo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-child-metrics,.hard-limit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.top-bar{padding-inline:18px}.page{width:calc(100% - 32px);margin:16px;padding:20px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
