:root{--cream:#fffaf3;--ink:#41383d;--muted:#8e7f85;--pink:#f28fac;--pink-soft:#ffe2ea;--blue:#72add8;--blue-soft:#def1ff;--yellow:#f5d66f;--line:rgba(65,56,61,.18);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:#eee8e3;font-synthesis:none}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.app-shell{position:relative;width:100%;max-width:520px;height:100dvh;margin:auto;overflow:hidden;background-color:var(--cream);background-size:100% 100%;background-position:center;background-repeat:no-repeat;box-shadow:0 0 40px rgba(51,43,47,.12)}.page{height:100dvh;padding:max(16px,env(safe-area-inset-top)) 18px 0;overflow:hidden}.app-head{height:48px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:9px}.mark{display:grid;place-items:center;width:34px;height:34px;border:1.7px solid var(--ink);border-radius:11px 14px 10px 15px;background:#fff;font-size:16px;box-shadow:3px 3px 0 var(--pink-soft);transform:rotate(-1deg)}.wordmark h1{font-size:20px;margin:0;letter-spacing:.04em}.wordmark small{display:block;color:var(--muted);font-size:10px;margin-top:1px}.head-action{border:0;background:transparent;color:var(--muted);font-size:12px;padding:8px}.icon{width:22px;height:22px;display:block}.top-nav{height:54px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:3px;border-bottom:1px dashed var(--line)}.nav-item{position:relative;border:0;background:transparent;display:flex;align-items:center;justify-content:center;gap:5px;color:var(--muted);font-size:11px;padding:0}.nav-item .icon{width:21px;height:21px}.nav-item.active{color:var(--ink);font-weight:700}.nav-item.active::after{content:"";position:absolute;bottom:-1px;width:28px;height:3px;border-radius:99px;background:var(--pink);transform:rotate(-2deg)}.nav-item:nth-child(2).active::after{background:var(--blue)}
.scene-zone{height:calc(64dvh - 105px);min-height:370px;max-height:470px;padding-top:15px;display:flex;flex-direction:column}.view-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.view-title h2{margin:0;font-size:17px}.view-title .compact{font-size:12px;color:var(--muted)}.owner-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.owner-tab{border:1.5px solid var(--line);border-radius:13px 16px 12px 15px;background:rgba(255,255,255,.38);padding:10px 12px;display:flex;align-items:center;justify-content:space-between;font-size:12px}.owner-tab b{font-size:15px}.owner-tab.me.active{border-color:var(--blue);background:rgba(222,241,255,.68);box-shadow:3px 3px 0 rgba(114,173,216,.22)}.owner-tab.ta.active{border-color:var(--pink);background:rgba(255,226,234,.7);box-shadow:3px 3px 0 rgba(242,143,172,.2)}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:8px}.progress-track{height:5px;flex:1;background:rgba(65,56,61,.09);border-radius:99px;overflow:hidden}.progress-track i{display:block;height:100%;border-radius:inherit;background:var(--blue)}.ta-mode .progress-track i{background:var(--pink)}.add-btn{display:flex;align-items:center;gap:5px;border:1.5px solid var(--ink);background:#fff;border-radius:11px 13px 10px 14px;padding:6px 9px;font-size:11px;font-weight:700;box-shadow:2px 3px 0 var(--pink-soft)}.add-btn .icon{width:18px;height:18px}.task-list{flex:1;min-height:0;overflow-y:auto;padding:2px 3px 10px;scrollbar-width:none}.task-list::-webkit-scrollbar{display:none}.task-row{display:flex;align-items:center;gap:10px;min-height:55px;margin-bottom:7px;padding:7px 10px;border:1.3px solid rgba(65,56,61,.16);border-radius:13px 16px 13px 15px;background:rgba(255,252,247,.66);box-shadow:2px 2px 0 rgba(65,56,61,.05)}.task-row:nth-child(even){transform:rotate(.18deg)}.task-check{flex:0 0 27px;width:27px;height:27px;padding:0;border:1.5px solid var(--ink);border-radius:9px 11px 8px 10px;background:#fff;display:grid;place-items:center}.task-check .icon{width:18px;height:18px;opacity:0}.task-row.done .task-check{background:var(--blue-soft);border-color:var(--blue)}.ta-mode .task-row.done .task-check{background:var(--pink-soft);border-color:var(--pink)}.task-row.done .task-check .icon{opacity:1}.task-row.done .task-name{text-decoration:line-through;color:var(--muted)}.task-copy{min-width:0;flex:1}.task-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-meta{margin-top:3px;font-size:10px;color:var(--muted)}.task-menu{border:0;background:transparent;padding:8px 2px;color:var(--muted);font-size:19px;line-height:1}.paused{opacity:.48}.empty{padding:38px 0;text-align:center;color:var(--muted);font-size:12px}.empty .icon{width:36px;height:36px;margin:0 auto 9px}
.calendar-zone{height:calc(66dvh - 105px);max-height:490px;padding-top:14px}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.calendar-head strong{font-size:17px}.month-btn{border:0;background:transparent;font-size:21px;padding:5px 10px}.week,.days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.week{font-size:10px;color:var(--muted);text-align:center;margin-bottom:6px}.day{height:43px;border:0;background:transparent;border-radius:12px;padding:3px 0;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:10px}.day img{width:21px;height:21px}.day.selected{outline:1.5px solid var(--yellow);background:rgba(255,255,255,.55)}.calendar-summary{display:flex;gap:14px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);font-size:11px;color:var(--muted)}.calendar-summary b{color:var(--ink);font-size:14px;margin-right:3px}
.pair-zone,.settings-zone{height:calc(64dvh - 105px);min-height:370px;padding-top:18px}.pair-status{display:flex;align-items:center;gap:10px;padding-bottom:14px;border-bottom:1px dashed var(--line)}.pair-faces{font-size:31px}.pair-status h2{font-size:16px;margin:0 0 3px}.pair-status p{font-size:11px;color:var(--muted);margin:0}.pair-code{padding:20px 0 14px;text-align:center}.pair-code small{color:var(--muted);font-size:10px}.pair-code strong{display:block;font-size:29px;letter-spacing:.2em;margin-top:5px}.action-line{display:grid;grid-template-columns:1fr 1fr;gap:9px}.sketch-button{border:1.5px solid var(--ink);border-radius:12px 15px 11px 14px;background:#fff;padding:11px;font-size:12px;font-weight:700;box-shadow:3px 3px 0 var(--pink-soft)}.sketch-button.blue{box-shadow:3px 3px 0 var(--blue-soft)}.rule-list{margin-top:20px}.rule{display:flex;align-items:center;gap:10px;height:48px;border-bottom:1px dashed var(--line);font-size:12px}.rule .icon{width:20px}.rule span:last-child{margin-left:auto;color:var(--muted);font-size:10px}
.profile-line{display:flex;align-items:center;gap:12px;padding:4px 0 14px;border-bottom:1px dashed var(--line)}.profile-avatar{width:48px;height:48px;border:1.5px solid var(--ink);border-radius:16px 19px 15px 18px;background:linear-gradient(135deg,var(--blue-soft),var(--pink-soft));display:grid;place-items:center;font-size:23px;box-shadow:3px 3px 0 rgba(65,56,61,.1)}.profile-line h2{font-size:16px;margin:0 0 3px}.profile-line p{margin:0;color:var(--muted);font-size:10px}.setting-row{height:49px;display:flex;align-items:center;gap:10px;border-bottom:1px dashed var(--line)}.setting-row>.icon{width:20px}.setting-copy{flex:1}.setting-copy b{display:block;font-size:12px}.setting-copy small{font-size:9px;color:var(--muted)}.toggle{width:39px;height:22px;padding:3px;border:0;border-radius:99px;background:#d9d2d5}.toggle::after{content:"";display:block;width:16px;height:16px;border-radius:50%;background:#fff;transition:.18s}.toggle.on{background:var(--pink)}.toggle.on::after{transform:translateX(17px)}
.sheet-backdrop{position:fixed;z-index:40;inset:0;background:rgba(65,56,61,.28);display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:520px;max-height:91dvh;overflow:auto;background:var(--cream);border-radius:25px 25px 0 0;padding:10px 18px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px rgba(65,56,61,.15)}.sheet-handle{width:40px;height:4px;border-radius:99px;background:rgba(65,56,61,.18);margin:0 auto 14px}.sheet-head{display:flex;align-items:center;justify-content:space-between}.sheet-head h2{font-size:18px;margin:0}.close{border:0;background:transparent;font-size:22px;padding:5px}.field{margin-top:13px}.field label{display:block;font-size:10px;color:var(--muted);margin:0 0 5px 2px}.field input,.field select{width:100%;border:1.3px solid var(--line);border-radius:11px 13px 10px 12px;background:#fff;padding:11px;outline:none}.field input:focus,.field select:focus{border-color:var(--pink)}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:9px}.check-line{display:flex;align-items:center;justify-content:space-between;height:46px;border-bottom:1px dashed var(--line);font-size:12px}.form-actions{display:grid;grid-template-columns:1fr 2fr;gap:9px;margin-top:16px}.form-actions button{border:1.3px solid var(--line);border-radius:12px;padding:11px;background:#fff}.form-actions .save{border-color:var(--ink);background:var(--pink-soft);font-weight:700}.danger{width:100%;border:0;background:transparent;color:#bc5875;font-size:11px;margin-top:15px;padding:9px}.date-detail h3{font-size:17px;margin:0 0 14px}.detail-person{padding:10px 0;border-top:1px dashed var(--line)}.detail-person strong{font-size:12px}.detail-person p{font-size:11px;color:var(--muted);margin:7px 0}.toast{position:fixed;z-index:60;left:50%;bottom:25px;transform:translate(-50%,10px);opacity:0;background:var(--ink);color:#fff;border-radius:11px 13px 10px 12px;padding:10px 14px;font-size:11px;transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:521px){body{padding:18px 0}.app-shell{height:calc(100dvh - 36px);border-radius:28px}.page{height:calc(100dvh - 36px)}.sheet-backdrop{align-items:center}.sheet{border-radius:25px;max-height:86dvh}}@media(max-width:370px){.page{padding-left:14px;padding-right:14px}.scene-zone{min-height:345px}.task-row{min-height:51px}.day{height:40px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.auth-page{height:100dvh;padding:max(26px,env(safe-area-inset-top)) 22px;display:flex;flex-direction:column}.auth-brand{display:flex;align-items:center;gap:10px}.auth-brand h1{font-size:23px;margin:0}.auth-form{margin-top:42px;padding:20px;border:1.5px solid var(--line);border-radius:18px 22px 17px 21px;background:rgba(255,252,247,.78);box-shadow:4px 5px 0 rgba(242,143,172,.14)}.auth-form h2{font-size:19px;margin:0 0 17px}.auth-form label{display:block;font-size:10px;color:var(--muted);margin-top:12px}.auth-form input{display:block;width:100%;margin-top:5px;padding:11px;border:1.3px solid var(--line);border-radius:11px 13px 10px 12px;background:#fff;outline:none}.auth-form input:focus{border-color:var(--pink)}.auth-submit{width:100%;margin-top:18px;padding:12px;border:1.5px solid var(--ink);border-radius:12px 14px 11px 13px;background:var(--pink-soft);font-weight:700;box-shadow:3px 3px 0 var(--pink)}.auth-switch{width:100%;border:0;background:transparent;color:var(--muted);font-size:11px;padding:14px 0 2px}.loading{height:100dvh;display:grid;place-items:center;color:var(--muted);font-size:12px}.wide-sketch{width:100%;margin-top:24px;padding:12px;border:1.5px solid var(--ink);border-radius:12px 15px 11px 14px;background:#fff;box-shadow:3px 3px 0 var(--pink-soft);font-weight:700}.join-form{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line)}.join-form label{font-size:10px;color:var(--muted)}.join-form>div{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:6px}.join-form input{min-width:0;padding:11px;border:1.3px solid var(--line);border-radius:11px;background:#fff}.join-form button{padding:0 14px;border:1.5px solid var(--ink);border-radius:11px;background:var(--blue-soft);font-size:11px;font-weight:700}.linked-days strong{font-size:19px;letter-spacing:.06em}.unlink,.logout{width:100%;margin-top:14px;border:0;background:transparent;color:#b95672;font-size:11px;padding:10px}.inline-time{width:84px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:6px;font-size:11px}
.history-item{display:block;width:100%;border:0;border-bottom:1px dashed var(--line);background:transparent;text-align:left;padding:9px 2px;font-size:11px;color:var(--muted)}.history-item.done{color:var(--blue)}.makeup-note{display:block;margin-top:12px;color:var(--muted);font-size:9px}
