:root{--bg:var(--xb-bg);--surface:var(--xb-surface);--ink:var(--xb-ink);--muted:var(--xb-muted);--muted-strong:var(--xb-muted-strong);--line:var(--xb-line);--accent:var(--xb-accent);--accent-soft:var(--xb-accent-soft);--chestnut:#8c5a3c;--warn:var(--xb-danger);--warn-soft:#f6e9e5;--sans:var(--xb-font-sans);--serif:var(--xb-font-serif);--ease:var(--xb-ease)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:#ece8e2;color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.6}html{scroll-behavior:auto}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}.app{max-width:430px;min-height:100vh;margin:0 auto;background:var(--bg);position:relative;padding-bottom:84px;box-shadow:0 0 40px #0000000f}.page{padding:0 20px 24px;animation:in .22s var(--ease)}@keyframes in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.top{display:flex;align-items:center;gap:12px;padding:22px 20px 6px}.top .xb-mascot{width:44px;height:36px;flex:none}.top h1{margin:0;font:600 22px/1.25 var(--serif);letter-spacing:.02em}.top .sub{color:var(--muted-strong);font-size:13px}.back{display:flex;align-items:center;gap:6px;padding:20px 20px 4px;color:var(--muted-strong);font-size:14px}.back svg{width:18px;height:18px}h2{font:600 13px/1 var(--sans);color:var(--muted);letter-spacing:.08em;margin:28px 0 12px}h2:first-child{margin-top:8px}.alert{background:var(--warn-soft);border-left:3px solid var(--warn);padding:14px 16px;margin:0 0 8px;border-radius:2px}.alert[data-sum]{cursor:pointer}.alert .tag{font-size:12px;color:var(--warn);font-weight:600;letter-spacing:.06em}.alert p{margin:4px 0 0}.alert .tip{color:var(--muted-strong);font-size:13.5px;margin-top:8px}.card{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:16px;margin-bottom:12px;transition:transform var(--ease) .15s}.card:active{transform:scale(.99)}.meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12.5px}.headline{font:600 17px/1.5 var(--serif);margin:6px 0 10px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:12px;padding:2px 9px;border-radius:20px;background:var(--accent-soft);color:#7a5a30}.chip.new{background:#fff;border:1px solid var(--accent);color:var(--accent)}.quote{font:15px/1.7 var(--serif);color:#3b342c;border-left:2px solid var(--accent);padding:2px 0 2px 12px;margin:12px 0 2px}.works{display:flex;gap:8px;margin-top:12px;align-items:center}.works img,.works .cover-ph{width:52px;height:39px;object-fit:cover;border-radius:2px;flex:none}.works span{font-size:12.5px;color:var(--muted-strong)}.detail h3{font:600 13px var(--sans);color:var(--muted);letter-spacing:.06em;margin:24px 0 8px}.detail p{margin:0}.detail .headline{font-size:21px;margin:10px 0 14px}.detail .fine{color:var(--muted);font-size:12.5px;margin-top:22px}.add{width:100%;margin-top:18px;padding:13px;border:1px dashed var(--accent);color:var(--accent);border-radius:2px;background:transparent}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.work{display:block;text-align:left;color:inherit;text-decoration:none}.work .cv{position:relative;aspect-ratio:4/3;border-radius:2px;overflow:hidden;background:var(--line)}.work img{width:100%;height:100%;object-fit:cover;display:block}.work .kind{position:absolute;left:6px;top:6px;font-size:11px;background:#ffffffe6;padding:0 6px;border-radius:2px}.work b{display:block;font:600 14.5px/1.4 var(--serif);margin-top:8px}.work small{color:var(--muted);font-size:12px}.seg{display:flex;gap:4px;background:#ebe6df;padding:3px;border-radius:3px;margin:8px 0 18px}.seg button{flex:1;padding:6px;border-radius:2px;font-size:13.5px;color:var(--muted-strong)}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #00000014}.cover-ph{display:grid;place-items:center;width:100%;height:100%;background:#efe8dc}.cover-ph .xb-mascot{width:38%;height:auto}.works .cover-ph .xb-mascot{width:60%}.cover-ph .xb-mascot path,.cover-ph .xb-mascot ellipse,.cover-ph .xb-mascot circle{fill:none;stroke:#cdb998;stroke-width:2.5}.cover-ph .xb-mascot-eye{animation:none}.rows{background:var(--surface);border:1px solid var(--line);border-radius:2px}.row{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);width:100%;text-align:left}.row:last-child{border-bottom:0}.row .v{color:var(--muted-strong);font-size:14px}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#6b9a6b;margin-right:6px;vertical-align:1px}.dot.off{background:var(--muted)}.privacy{font-size:13.5px;color:var(--muted-strong);background:var(--surface);border:1px solid var(--line);padding:4px 16px;border-radius:2px}.privacy p{margin:10px 0}.danger{width:100%;margin-top:24px;padding:13px;color:var(--warn);border:1px solid #e0c4bd;border-radius:2px;background:var(--surface)}.logout{display:block;margin:18px auto 0;padding:6px 12px;color:var(--muted-strong);font-size:13.5px}.top .plus{margin-left:auto;align-self:center;font-size:13.5px;color:var(--chestnut);border:1px solid var(--accent);border-radius:20px;padding:5px 12px;background:var(--surface)}.month-sum{background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:14px 16px;margin:10px 0 14px}.month-sum .k{font-size:12px;color:var(--muted);letter-spacing:.06em}.month-sum p{margin:4px 0 0;font:600 16px/1.5 var(--serif)}.month-sum .nums{display:flex;gap:16px;margin-top:8px;font-size:12.5px;color:var(--muted-strong)}.month-sum .nums b{color:var(--ink);font-size:15px;margin-right:2px}.mhead{display:flex;align-items:center;justify-content:space-between;margin:6px 0 8px}.mhead b{font:600 17px var(--serif)}.mhead button{width:34px;height:34px;display:grid;place-items:center;color:var(--muted-strong)}.mhead svg{width:18px;height:18px}.mhead .r svg{transform:rotate(180deg)}.cal{display:grid;grid-template-columns:repeat(7,1fr);background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:6px 4px 8px}.cal .wd{text-align:center;font-size:11.5px;color:var(--muted);padding:4px 0 6px}.cell{position:relative;height:56px;display:flex;flex-direction:column;align-items:center;padding-top:5px;border-radius:2px}.cell .n{width:28px;height:28px;line-height:28px;text-align:center;border-radius:50%;font-size:14px}.cell.out .n{color:#c9c1b5}.cell.today .n{border:1.5px solid var(--chestnut);color:var(--chestnut);font-weight:600}.cell.sel .n{background:var(--ink);color:#fff;border-color:var(--ink)}.cell .marks{display:flex;gap:3px;height:6px;margin-top:3px}.cell .marks i{width:5px;height:5px;border-radius:50%;background:var(--chestnut)}.cell .marks i.w{background:var(--warn)}.cell .ev{position:absolute;left:3px;right:3px;bottom:3px;font-size:9.5px;line-height:13px;height:13px;text-align:center;color:#7a5a30;background:var(--accent-soft);border-radius:2px;overflow:hidden;white-space:nowrap}.cell .ev.mid{color:transparent}.cell .ev.surprise{background:#efe3ee;color:#7a4a72}.cell .ev.mid.surprise{color:transparent}.cal-legend{display:flex;gap:14px;font-size:11.5px;color:var(--muted);margin:8px 2px 0}.cal-legend i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--chestnut);margin-right:4px;vertical-align:1px}.cal-legend i.w{background:var(--warn)}.cal-legend i.e{width:12px;height:7px;border-radius:2px;background:var(--accent-soft)}.dayhead{margin:26px 0 4px;font:600 18px var(--serif)}.daysub{color:var(--muted-strong);font-size:13.5px;margin-bottom:14px}.event{display:block;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:2px;padding:13px 16px;margin-bottom:12px}.event.surprise{border-left-color:#a77a9f}.event .et{display:flex;justify-content:space-between;align-items:baseline}.event b{font:600 16px var(--serif)}.event .ty{font-size:12px;color:var(--muted)}.event .how{margin:8px 0 0;padding:0;list-style:none;font-size:13.5px;color:var(--muted-strong)}.event .how li{padding:2px 0 2px 14px;position:relative}.event .how li:before{content:"";position:absolute;left:2px;top:11px;width:5px;height:5px;border-radius:50%;background:var(--accent)}.event .note{font-size:13px;color:var(--muted-strong);margin-top:6px}.empty{color:var(--muted);font-size:14px;padding:18px 0 4px;text-align:center}.typechips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.typechips button{padding:5px 12px;border:1px solid var(--line);border-radius:20px;font-size:13.5px;background:var(--surface)}.typechips button.on{border-color:var(--ink);background:var(--ink);color:#fff}.sheet input,.form input{width:100%;font:inherit;border:1px solid var(--line);border-radius:2px;padding:10px 12px;background:var(--surface);margin-top:12px}.dates{display:flex;gap:8px;align-items:center}.dates input{flex:1;min-width:0}.dates span{margin-top:12px;color:var(--muted)}.radio{display:block;width:100%;text-align:left;margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:2px;background:var(--surface);font-size:14px}.radio.on{border-color:var(--ink)}.radio small{display:block;color:var(--muted);font-size:12px}.sheet .lbl,.form .lbl{font-size:12.5px;color:var(--muted);margin-top:16px}.ferr{font-size:12.5px;color:var(--warn);margin-top:6px}.tabs{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:430px;display:flex;background:#f7f5f2f0;backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 0 calc(8px + env(safe-area-inset-bottom));z-index:5}.tabs[hidden]{display:none}.tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11.5px;color:var(--muted)}.tabs svg{width:23px;height:23px}.tabs button.on{color:var(--ink)}.tabs button.on svg{color:var(--chestnut)}.scrim{position:fixed;inset:0;background:var(--xb-scrim);opacity:0;pointer-events:none;transition:opacity .2s;z-index:10}.scrim.on{opacity:1;pointer-events:auto}.sheet{position:fixed;left:50%;bottom:0;width:100%;max-width:430px;max-height:88vh;overflow:auto;transform:translate(-50%,100%);background:var(--bg);border-radius:10px 10px 0 0;padding:10px 20px calc(24px + env(safe-area-inset-bottom));transition:transform .26s var(--ease),visibility 0s linear .26s;visibility:hidden;z-index:11}.sheet.on{transform:translate(-50%);visibility:visible;transition:transform .26s var(--ease)}.grab{width:36px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 14px}.sheet h4{margin:0 0 4px;font:600 18px var(--serif)}.sheet .sm{color:var(--muted);font-size:12.5px}.sheet .sm.gap{margin-top:6px}.sheet textarea{width:100%;font:inherit;border:1px solid var(--line);border-radius:2px;padding:10px 12px;background:var(--surface);margin-top:12px;resize:none}.acts{display:flex;gap:10px;margin-top:18px}.acts button{flex:1;padding:12px;border-radius:2px;border:1px solid var(--line);background:var(--surface)}.acts .pri{background:var(--ink);color:#fff;border-color:var(--ink)}.acts .pri.warn{background:var(--warn);border-color:var(--warn)}.acts .del{color:var(--warn)}.toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%) translateY(10px);background:var(--ink);color:#fff;padding:8px 16px;border-radius:20px;font-size:13.5px;opacity:0;transition:.2s;z-index:20;pointer-events:none}.toast.on{opacity:1;transform:translate(-50%)}.login{padding:72px 28px 24px;text-align:center}.login .xb-mascot{width:76px;height:62px;margin:0 auto}.login h1{margin:14px 0 22px;font:600 22px/1.25 var(--serif);letter-spacing:.02em}.login .form{text-align:left}.login .foot{margin-top:22px;font-size:13px;color:var(--muted-strong)}.login .foot a{color:var(--chestnut);text-decoration:none}
