:root{--black:#121012;--ink:#241a20;--muted:#7d6a74;--magenta:#c2185b;--fuchsia:#e4337a;--hotpink:#ff5aa0;--pink-soft:#fde4ee;--plum:#5e1b45;--wine:#8c2a45;--jade:#3f8a67;--sage:#a9d6b4;--cream:#f7efe2;--butter:#f2dfa0;--paper:#fffcfae6;--paper-solid:#fffcfa;--line:#5e1b4524;--radius:14px;--shadow-sm:0 1px 2px #5e1b4514, 0 4px 14px #5e1b4514;--shadow-md:0 4px 10px #5e1b451a, 0 18px 40px #5e1b4524;--grad-pink:linear-gradient(135deg, #e4337a 0%, #c2185b 55%, #8c2a45 100%);--font-serif:"Cormorant Garamond", "Shippori Mincho B1", "Hiragino Mincho ProN", serif;--font-mincho:"Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", serif;--font-body:"Zen Kaku Gothic New", "Hiragino Sans", "Noto Sans JP", system-ui, sans-serif;--ease:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.5, .64, 1);--safe-bottom:env(safe-area-inset-bottom,0px);--mesh:radial-gradient(#ffffff12 .8px, transparent 1.1px) 0 0 / 4px 4px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font-body);color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.6}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--fuchsia);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.boot,.loading{place-items:center;min-height:40dvh;display:grid}.boot{background:var(--black);min-height:100dvh}.spin{animation:1.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.flower-scatter{pointer-events:none;position:absolute;inset:0;overflow:hidden}.fs-item{position:absolute}@media (width<=699px){.hide-below-700{display:none}}.wash{z-index:0;pointer-events:none;opacity:.9;contain:strict;will-change:transform;position:fixed;inset:0;transform:translateZ(0)}.wash svg{display:block}.login{min-height:100dvh;padding:24px 18px calc(24px + var(--safe-bottom));background:var(--mesh), var(--black);place-items:center;display:grid;position:relative;overflow:hidden}.login-art .fs-item{animation:10s ease-in-out infinite sway}.login-art .fs-item:nth-child(3n){animation-delay:-3s}.login-art .fs-item:nth-child(3n+1){animation-delay:-6s}@keyframes sway{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-6px)rotate(3deg)}}.login-card{z-index:1;text-align:center;background:#fffaf7;border:1px solid #fff9;border-radius:22px;width:min(100%,390px);padding:36px 28px 28px;position:relative;box-shadow:0 20px 60px #00000073}.login-kicker{font-family:var(--font-serif);color:var(--magenta);margin:0 0 8px;font-size:18px;font-style:italic}.login-title,.logo{font-family:var(--font-serif);letter-spacing:.01em;margin:0;font-weight:600;line-height:1}.login-title{color:var(--black);font-size:clamp(48px,13vw,60px)}.login-title span,.logo span{background:var(--grad-pink);color:#0000;-webkit-background-clip:text;background-clip:text;padding-right:.06em;font-style:italic}.login-copy{font-family:var(--font-mincho);letter-spacing:.05em;margin:16px 0 24px;font-weight:500;line-height:2}.auth-form{text-align:left;flex-direction:column;gap:14px;display:flex}.auth-field{color:var(--ink);flex-direction:column;gap:6px;font-size:13px;font-weight:500;display:flex}.auth-field small{color:var(--muted);margin-left:4px;font-size:11px;font-weight:400}.auth-field input{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;min-height:48px;padding:0 16px;font-size:16px;transition:border-color .2s,box-shadow .2s}.auth-field input:focus{border-color:var(--fuchsia);outline:none;box-shadow:0 0 0 4px #e4337a26}.auth-btn{background:var(--black);color:#fff;letter-spacing:.08em;width:100%;min-height:54px;transition:transform .15s var(--ease), box-shadow .25s var(--ease), background .25s, opacity .2s;border:0;border-radius:999px;margin-top:4px;padding:0 22px;font-size:15px;font-weight:500;box-shadow:0 8px 22px #c2185b59}.auth-btn:hover:not(:disabled){background:#241820;box-shadow:0 10px 28px #e4337a80}.auth-btn:active:not(:disabled){transform:scale(.98)}.auth-btn:disabled{opacity:.6}.auth-switch{color:var(--muted);margin:18px 0 0;font-size:13px}.auth-switch button{min-height:44px;color:var(--magenta);text-underline-offset:3px;background:0 0;border:0;padding:0 6px;font-weight:700;text-decoration:underline}.login-error{color:var(--magenta);margin:0;font-size:13px;font-weight:500}.consent-title{font-family:var(--font-mincho);color:var(--black);overflow-wrap:anywhere;margin:0;font-size:24px;line-height:1.4}.consent-title span{font-family:var(--font-serif);color:var(--magenta);margin-top:4px;font-size:16px;font-style:italic;display:block}.consent-card .login-copy{overflow-wrap:anywhere;margin:10px 0 18px}.consent-scopes{border:1px solid var(--line);text-align:left;background:#fff;border-radius:12px;margin:0 0 16px;padding:14px 16px 14px 32px;font-size:14px;line-height:1.7}.consent-note{color:var(--muted);overflow-wrap:anywhere;margin:0 0 12px;font-size:13px}.consent-warning{color:var(--magenta);text-align:left;background:#e4337a14;border-radius:10px;margin:0 0 12px;padding:10px 12px;font-size:13px}.consent-actions{flex-direction:column;gap:8px;display:flex}.consent-deny{min-height:48px;color:var(--muted);text-underline-offset:3px;background:0 0;border:0;font-size:14px;text-decoration:underline}.consent-link{place-items:center;text-decoration:none;display:inline-grid}.app-header{z-index:20;background:var(--mesh), var(--black);height:64px;position:sticky;top:0;box-shadow:0 6px 24px #12101240}.header-inner{z-index:1;justify-content:space-between;align-items:center;gap:12px;max-width:680px;height:100%;margin:0 auto;padding:0 16px;display:flex;position:relative}.logo{color:#fff;text-shadow:0 2px 12px #0009;font-size:30px}.logo span{background:linear-gradient(135deg,#ffb3d1,#ff5aa0 60%,#e4337a);-webkit-background-clip:text;background-clip:text}.header-user{align-items:center;gap:10px;display:flex}.avatar{border:2px solid var(--hotpink);object-fit:cover;background:var(--black);border-radius:50%;width:36px;height:36px}.avatar-fallback{background:var(--paper-solid);color:var(--black);font-family:var(--font-serif);place-items:center;font-size:18px;font-weight:600;display:grid}.logout-btn{-webkit-backdrop-filter:blur(4px);color:#fff;letter-spacing:.06em;background:#121012b8;border:1px solid #ffffff59;border-radius:999px;min-height:44px;padding:0 14px;font-size:12px;transition:border-color .2s,background .2s}.logout-btn:hover{border-color:var(--hotpink);background:#121012e6}.app{min-height:100dvh;position:relative}.container{z-index:1;max-width:640px;padding:26px 16px calc(120px + var(--safe-bottom));margin:0 auto;position:relative}.side-deco{display:none}@media (width>=1000px){.side-deco{z-index:0;pointer-events:none;opacity:.92;display:block;position:fixed}.side-left{bottom:-40px;left:calc(50% - 640px)}.side-right{top:110px;right:calc(50% - 600px)}.side-deco .sd-b,.side-deco .sd-leaf{position:absolute}.side-left .sd-b{top:-24px;right:10px}.side-left .sd-leaf{top:-80px;left:40px}.side-right .sd-b{bottom:-20px;left:10px}.side-right .sd-leaf{bottom:-60px;right:-10px}}.add-form{background:var(--paper);-webkit-backdrop-filter:blur(16px)saturate(1.2);box-shadow:var(--shadow-md);border:1px solid #ffffffb3;border-radius:20px;flex-wrap:wrap;gap:10px;padding:12px;display:flex}.add-input{border:1px solid var(--line);background:#ffffffd9;border-radius:999px;flex:260px;min-width:0;min-height:48px;padding:0 16px;font-size:17px;transition:border-color .2s,box-shadow .2s}.add-input::placeholder{color:#b09aa5}.add-input:focus{border-color:var(--fuchsia);outline:none;box-shadow:0 0 0 4px #e4337a26}.add-actions{flex:1 0 auto;gap:8px;display:flex}.due-picker{flex:1 0 auto;align-items:center;display:flex;position:relative}.due-btn{border:1px solid var(--line);width:100%;min-height:48px;color:var(--muted);white-space:nowrap;background:#fff9;border-radius:999px;align-items:center;gap:6px;padding:0 16px;font-size:14px;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.due-btn:hover{border-color:var(--jade);color:var(--ink)}.due-btn svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:18px;height:18px}.has-date .due-btn{border-color:var(--jade);color:#1f5e42;background:#e6f3ea;padding-right:42px}.due-native{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;bottom:0;left:0}.due-clear{color:#1f5e42;background:0 0;border:0;width:44px;height:44px;font-size:18px;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.add-btn{background:var(--grad-pink);color:#fff;letter-spacing:.1em;min-width:84px;min-height:48px;transition:transform .15s var(--ease), box-shadow .2s, opacity .2s, filter .2s;border:0;border-radius:999px;padding:0 22px;font-weight:700;box-shadow:0 6px 16px #c2185b4d}.add-btn:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 8px 22px #c2185b66}.add-btn:active:not(:disabled){transform:scale(.95)}.add-btn:disabled{opacity:.4;box-shadow:none}.list-head{justify-content:space-between;align-items:center;gap:10px;margin:32px 4px 14px;display:flex}.list-title{font-family:var(--font-serif);color:var(--black);align-items:baseline;gap:10px;margin:0;font-size:34px;font-style:italic;font-weight:600;line-height:1;display:flex}.list-count{background:var(--black);color:#fff;min-width:28px;height:28px;font-family:var(--font-body);border-radius:999px;place-items:center;padding:0 8px;font-size:13px;font-style:normal;font-weight:700;display:inline-grid;transform:translateY(-4px)}.toggle-done{background:var(--paper);-webkit-backdrop-filter:blur(10px);letter-spacing:.04em;min-height:44px;color:var(--ink);box-shadow:var(--shadow-sm);border:1px solid #ffffffb3;border-radius:999px;align-items:center;gap:8px;padding:0 6px 0 14px;font-size:12px;transition:background .2s,color .2s;display:inline-flex}.toggle-done.on{background:var(--black);border-color:var(--black);color:#fff}.done-count{background:var(--jade);color:#fff;border-radius:999px;place-items:center;min-width:26px;height:26px;padding:0 7px;font-size:12px;font-weight:700;display:inline-grid}.task-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.task-list:empty{display:none}.task{border-radius:var(--radius);min-height:60px;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:transform .2s var(--ease), box-shadow .2s var(--ease), background-color .2s, border-color .2s;animation:task-in .35s var(--ease);background:#fffcfaf0;border:1px solid #fffc;align-items:center;gap:2px;padding:6px 4px 6px 6px;display:flex;position:relative}@keyframes task-in{0%{opacity:0;transform:translateY(-8px)scale(.98)}}@media (hover:hover) and (pointer:fine){.task:hover{box-shadow:var(--shadow-md)}}.task:before{content:"";background:var(--grad-pink);border-radius:0 4px 4px 0;width:4px;position:absolute;top:10px;bottom:10px;left:0}.task.is-done:before{background:linear-gradient(180deg, var(--sage), var(--jade))}.task.is-done{box-shadow:none;background:#faf7f5b8}.task.is-done .task-title{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1.5px;-webkit-text-decoration-color:var(--jade);text-decoration-color:var(--jade)}.task.is-pending{opacity:.6}.task.in-selection{cursor:pointer}.task.is-selected{border-color:var(--fuchsia);box-shadow:0 0 0 1.5px var(--fuchsia), var(--shadow-md);background:#fde4eef2}.task.is-popping{animation:bloom .6s var(--ease)}@keyframes bloom{0%{box-shadow:0 0 0 0 #e4337a73, var(--shadow-sm)}to{box-shadow:0 0 0 14px #e4337a00, var(--shadow-sm)}}.task-handle{color:#bfa9b5;cursor:grab;touch-action:none;background:0 0;border:0;border-radius:10px;flex:none;align-self:stretch;place-items:center;width:40px;min-height:48px;padding:0;font-size:20px;line-height:1;transition:color .2s,background .2s;display:grid}.task-handle:hover{color:var(--magenta);background:#e4337a0f}.check,.select-mark{background:0 0;border:0;flex:none;place-items:center;width:44px;height:44px;padding:0;display:grid}.check-box{width:26px;height:26px;transition:border-color .2s, transform .25s var(--ease-spring);background:#fff;border:1.5px solid #c9a9b9;border-radius:50%;place-items:center;display:grid}.check svg,.select-mark svg{fill:none;stroke:#fff;stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24px;width:16px;height:16px;transition:stroke-dashoffset .3s var(--ease) 80ms}.check:hover .check-box{border-color:var(--fuchsia)}.check:active .check-box{transform:scale(.86)}.check.on .check-box{background:var(--grad-pink);animation:check-pop .42s var(--ease-spring);border-color:#0000}.check.on svg,.select-mark.on svg{stroke-dashoffset:0}@keyframes check-pop{0%{transform:scale(.7)}60%{transform:scale(1.18)}to{transform:scale(1)}}.select-mark:before{content:"";width:24px;height:24px;transition:background .2s, border-color .2s, transform .25s var(--ease-spring);background:#fff;border:1.5px solid #c9a9b9;border-radius:7px;grid-area:1/1}.select-mark svg{grid-area:1/1;position:relative}.select-mark.on:before{background:var(--fuchsia);border-color:var(--fuchsia);transform:rotate(-6deg)scale(1.06)}.task-body{flex-direction:column;flex:1;justify-content:center;min-width:0;padding:6px 6px 6px 2px;display:flex}.task-title{overflow-wrap:anywhere;cursor:text;font-size:16px;font-weight:500}.in-selection .task-title{cursor:pointer}.task-due{color:var(--muted);letter-spacing:.03em;align-items:center;gap:3px;margin-top:1px;font-size:12px;font-weight:500;display:inline-flex}.task-due.overdue{color:var(--magenta);font-weight:700}.overdue-mark{font-size:11px;display:inline-block}.task-delete{color:#b89aaa;width:44px;height:44px;transition:background .2s, color .2s, transform .2s var(--ease), opacity .2s;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.task-delete svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:16px;height:16px}.task-delete:hover{background:var(--pink-soft);color:var(--magenta);transform:rotate(90deg)}.task-delete:active{transform:scale(.85)}@media (hover:hover) and (pointer:fine){.task-delete{opacity:0}.task:hover .task-delete,.task-delete:focus-visible{opacity:1}}.task-editor{flex-direction:column;flex:1;gap:8px;min-width:0;padding:4px 8px 4px 0;display:flex}.editor-title{border:1px solid var(--fuchsia);background:#fff;border-radius:10px;width:100%;min-height:44px;padding:0 12px;font-size:16px}.editor-title:focus{outline:none;box-shadow:0 0 0 4px #e4337a26}.editor-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.editor-spacer{flex:1}.editor-due input{border:1px solid var(--line);background:#fff;border-radius:999px;min-height:40px;padding:0 10px;font-size:14px}.chip-btn{border:1px solid var(--line);background:#fff;border-radius:999px;min-height:40px;padding:0 14px;font-size:13px}.chip-btn.primary{background:var(--black);border-color:var(--black);color:#fff}.is-ghost{opacity:.45;background:var(--pink-soft)!important;border:1px dashed var(--fuchsia)!important;box-shadow:none!important}.is-chosen .task-handle{color:var(--magenta)}.is-dragging{cursor:grabbing;transform:rotate(1.5deg)scale(1.03);opacity:1!important;box-shadow:0 22px 44px #5e1b454d!important}body.is-sorting,body.is-sorting *{cursor:grabbing!important}.done-section{margin-top:30px}.done-title{font-family:var(--font-serif);color:var(--jade);align-items:center;gap:12px;margin:0 4px 12px;font-size:20px;font-style:italic;font-weight:600;display:flex}.done-title:after{content:"";background:linear-gradient(90deg, var(--jade), transparent);opacity:.5;flex:1;height:1px}.empty{text-align:center;background:var(--paper);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-sm);border:1px solid #ffffffb3;border-radius:20px;margin:12px 0;padding:34px 20px 30px}.empty-art{animation:8s ease-in-out infinite sway;display:inline-block;position:relative}.empty-b{position:absolute;bottom:4px;right:-14px}.empty-title{font-family:var(--font-mincho);letter-spacing:.05em;margin:14px 0 4px;font-size:18px;font-weight:700}.empty-sub{color:var(--muted);margin:0;font-size:13px}.action-bar{left:50%;bottom:calc(14px + var(--safe-bottom));z-index:40;background:var(--mesh), var(--black);color:#fff;width:min(100% - 20px,560px);animation:bar-in .35s var(--ease);border-radius:999px;align-items:center;gap:8px;padding:8px 8px 8px 20px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 16px 40px #12101259}@keyframes bar-in{0%{opacity:0;transform:translate(-50%,40px)}}.action-count{letter-spacing:.05em;white-space:nowrap;flex:1;font-size:13px}.action-count strong{font-family:var(--font-serif);font-variant-numeric:lining-nums;color:var(--hotpink);margin-right:4px;font-size:28px;font-weight:600}.action-btn{color:#fff;letter-spacing:.05em;min-width:64px;min-height:46px;transition:transform .15s var(--ease), filter .2s;background:0 0;border:1px solid #ffffff59;border-radius:999px;padding:0 18px;font-size:14px}.action-btn.danger{background:var(--grad-pink);border-color:#0000}.action-btn:active{transform:scale(.95)}.toast{left:50%;bottom:calc(18px + var(--safe-bottom));z-index:50;background:var(--mesh), var(--black);color:#fff;letter-spacing:.04em;width:max-content;max-width:calc(100% - 24px);animation:toast-in .35s var(--ease);border-radius:999px;align-items:center;gap:14px;padding:6px 6px 6px 20px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 14px 32px #12101259}.toast.raised{bottom:calc(92px + var(--safe-bottom))}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,16px)}}.toast-undo{background:var(--hotpink);min-height:44px;color:var(--black);letter-spacing:.06em;border:0;border-radius:999px;padding:0 18px;font-size:13px;font-weight:700;transition:filter .2s}.toast-undo:hover:not(:disabled){filter:brightness(1.08)}.toast-undo:disabled{opacity:.5}.error-toast{z-index:60;background:var(--paper-solid);max-width:calc(100% - 24px);color:var(--magenta);border:1px solid var(--fuchsia);box-shadow:var(--shadow-md);animation:toast-in .35s var(--ease);border-radius:999px;padding:12px 20px;font-size:14px;font-weight:700;position:fixed;top:78px;left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.dev-login-btn{border:1px dashed var(--jade);width:100%;min-height:44px;color:var(--jade);letter-spacing:.04em;background:0 0;border-radius:999px;margin-top:12px;font-size:13px}.dev-login-btn:hover:not(:disabled){background:#e6f3ea}
