@charset "UTF-8";
:root{color-scheme:light;--ink:#463b35;--muted:#807268;--paper:#fffaf1;--peach:#f6dfcf;--coral:#ac5037;--line:#ddc7b3;--green:#596b52}*{box-sizing:border-box}body{margin:0;background:var(--peach);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;background-image:radial-gradient(#b9784220 .7px,transparent .7px);background-size:6px 6px}button,input{font:inherit}button{cursor:pointer}button,a,input{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #476d83;outline-offset:4px}button{transition:background .15s,transform .15s}button:active{transform:translateY(1px)}.page{max-width:1120px;margin:auto;padding:0 46px}.masthead{height:100px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #b98f7238}.brand{color:var(--ink);text-decoration:none;font-size:16px;letter-spacing:2px;font-weight:800;display:flex;align-items:center;gap:10px}.brand-mark{font-size:32px;color:var(--coral)}.edition{color:var(--muted);font-size:12px;letter-spacing:2px}.intro{display:flex;justify-content:space-between;align-items:center;padding:56px 20px 48px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:750;color:var(--coral);margin:0 0 16px}h1{font-family:Georgia,"AppleMyungjo","Batang",serif;font-size:43px;line-height:1.4;font-weight:500;letter-spacing:-2px;margin:0}.intro-copy{font-size:14px;line-height:1.9;color:var(--muted);margin-top:22px}.thread-art{position:relative;width:260px;height:230px;display:grid;place-items:center}.patch{width:174px;height:186px;background:#eec0a7;border:1px dashed #a87051;outline:7px solid #eec0a7;box-shadow:10px 14px 0 #bd93761c;transform:rotate(9deg);font-family:Georgia,serif;text-align:center;padding-top:30px;font-size:27px;line-height:1.3;color:#70442f}.patch em{font-size:34px}.patch span{display:block;font-size:32px;margin-top:9px}.thread{position:absolute;width:110px;height:85px;border:2px solid #ac503790;border-top:0;border-radius:0 0 50% 50%;bottom:-18px;right:-2px;transform:rotate(-24deg);z-index:-1}.notebook{position:relative;background:var(--paper);padding:32px 34px 26px;border:1px solid #d1b299;border-radius:5px;box-shadow:0 8px 0 -3px #f3e5d8,0 9px 0 -3px #cfb49d,0 20px 50px #86533912}.notebook:before{content:"";pointer-events:none;position:absolute;inset:8px;border:1px dashed var(--line);border-radius:2px}.notebook-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.notebook-top .eyebrow{margin-bottom:8px;font-size:9px}h2{font-size:23px;letter-spacing:-.8px;margin:0}.text-button{border:0;background:transparent;color:var(--coral);font-size:12px;padding:10px 0}.text-button span{margin-left:8px}.week-toolbar{display:flex;justify-content:space-between;align-items:center;margin:30px 0 22px;padding-top:24px;border-top:1px solid var(--line)}.week-range{font-family:Georgia,serif;font-size:22px;margin:0;letter-spacing:.4px}.muted{color:var(--muted);font-size:11px;margin:7px 0 0}.week-toolbar nav{display:flex;gap:6px}.arrow,.today{background:transparent;border:1px solid var(--line);height:36px;border-radius:3px;color:var(--ink)}.arrow{width:36px;font-size:19px}.today{padding:0 12px;font-size:12px}.arrow:hover,.today:hover{background:#f4e7d9}button:disabled{opacity:.35;cursor:not-allowed}.grid-header,.habit-row{display:grid;grid-template-columns:minmax(145px,1fr) repeat(7,minmax(36px,1fr)) 58px;align-items:center;gap:8px}.grid-header{padding-bottom:15px;border-bottom:1px solid var(--line)}.header-label{font-size:11px;letter-spacing:1px;color:var(--muted)}.day-heading{text-align:center;color:var(--muted);font-size:10px}.day-heading strong{display:block;font-size:16px;font-weight:500;margin-top:6px}.day-heading.current strong{color:var(--coral);font-weight:800}.day-heading.weekend{color:#9f6d58}.count-heading{text-align:right;font-size:10px;color:var(--muted)}.habit-row{padding:18px 0;border-bottom:1px dashed var(--line)}.habit-info{display:flex;align-items:center;gap:8px;min-width:0}.habit-name{font-size:13px;line-height:1.5;overflow-wrap:anywhere;flex:1}.habit-remove{border:0;background:transparent;color:#947568;font-size:17px;flex-shrink:0;padding:7px;line-height:1}.habit-remove:hover{color:var(--coral);background:#f8e7dc}.stitch{height:34px;width:34px;justify-self:center;border-radius:50%;border:1px dashed #c6b9a3;color:#c6b9a3;background:transparent;font-size:19px;display:grid;place-items:center;padding:0}.stitch:hover{border-color:var(--green);background:#e9ecdf}.stitch[aria-pressed="true"]{background:var(--green);color:#fffaf1;border:1px solid var(--green);box-shadow:inset 0 0 0 3px var(--green),inset 0 0 0 4px #fffaf156}.stitch.is-today:not([aria-pressed="true"]){border-color:var(--coral);background:#f9eadd;color:var(--coral)}.row-count{text-align:right;white-space:nowrap;font-size:11px;color:var(--muted)}.row-count strong{font-family:Georgia,serif;font-size:20px;color:var(--green);font-weight:400;margin-right:3px}.weekly-summary{display:flex;align-items:center;justify-content:space-between;gap:30px;background:#f0eee1;padding:19px 22px;margin-top:25px;border-radius:3px}.summary-label{font-size:11px;color:var(--green)}.weekly-summary p{margin:5px 0 0;font-size:12px;color:var(--muted)}.weekly-summary strong{font-family:Georgia,serif;font-size:28px;color:var(--green);font-weight:400}.progress-wrap{width:43%;text-align:right}.progress-track{height:7px;background:#dcdcca;border-radius:5px;overflow:hidden;margin-bottom:9px}#progress-fill{height:100%;width:0;background:var(--green);border-radius:5px}#progress-text{font-size:10px;color:var(--green)}#habit-form{margin-top:29px}#habit-form>label{display:block;font-size:12px;font-weight:600;margin-bottom:11px}.input-row{display:flex;gap:8px}input{min-width:0;flex:1;background:#fffdf8;border:1px solid var(--line);border-radius:3px;padding:12px 14px;color:var(--ink);font-size:13px}input::placeholder{color:#9a8f82}.primary,.secondary,.danger{border:1px solid transparent;border-radius:3px;padding:11px 16px;font-size:12px}.primary,.danger{background:var(--coral);color:white}.primary:hover,.danger:hover{background:#8e3e28}.primary span{margin-left:12px}.secondary{background:#f1e7da;color:var(--ink);border-color:var(--line)}.input-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:10px;margin-top:9px}.input-meta p{margin:0}.error{color:#ad3528;font-size:12px;line-height:1.5;margin:8px 0 0}.error:empty{display:none}.bottom-notes{display:grid;grid-template-columns:1fr 1fr;gap:65px;padding:43px 20px 20px}.note-number{font-size:9px;letter-spacing:1.5px;color:#967565}.bottom-notes h3{font-size:15px;font-weight:600;margin:13px 0 10px}.bottom-notes p{font-size:12px;line-height:1.9;color:#79675c;margin:0}.privacy-delete{border:0;border-bottom:1px solid #b99883;color:#845e49;font-size:10px;background:transparent;padding:0 0 3px;margin-top:12px}.status{font-size:12px;color:var(--green);min-height:20px;text-align:center;line-height:1.6}footer{border-top:1px solid #b98f7240;margin-top:10px;padding:22px 0 30px;display:flex;justify-content:space-between;color:#987967;font-size:9px;letter-spacing:1px}.empty{text-align:center;padding:25px 10px 12px}.empty>span{font-size:35px;color:var(--coral)}.empty h3{font-size:16px}.empty p{font-size:12px;color:var(--muted)}dialog{max-width:420px;width:calc(100% - 36px);border:1px solid var(--line);border-radius:6px;background:var(--paper);color:var(--ink);padding:30px;box-shadow:0 20px 70px #39261740}dialog::backdrop{background:#3f30285e}dialog h2{font-size:22px}#dialog-copy{font-size:13px;line-height:1.8;overflow-wrap:anywhere}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}@media(max-width:760px){.page{padding:0 24px}.intro{padding:35px 6px 32px}h1{font-size:34px}.thread-art{width:180px}.patch{width:130px;height:150px;font-size:22px;padding-top:22px}.patch em{font-size:28px}.patch span{font-size:24px}.notebook{padding:28px 23px}.grid-header,.habit-row{grid-template-columns:minmax(110px,1fr) repeat(7,minmax(26px,1fr)) 40px;gap:4px}.stitch{width:29px;height:29px}.habit-name{font-size:12px}.bottom-notes{gap:30px;padding:35px 5px 10px}}@media(max-width:560px){.page{padding:0 16px}.masthead{height:76px}.brand{font-size:12px;letter-spacing:1.6px}.brand-mark{font-size:25px}.edition{font-size:9px;letter-spacing:0}.intro{padding:31px 5px 33px;position:relative}.eyebrow{font-size:8px;letter-spacing:1.5px}h1{font-size:32px;line-height:1.5}.intro-copy{font-size:12px;margin:16px 0 0}.thread-art{position:absolute;right:9px;top:47px;width:90px;height:122px}.patch{width:74px;height:96px;font-size:13px;padding-top:16px;outline-width:4px;transform:rotate(10deg)}.patch em{font-size:17px}.patch span{font-size:19px;margin-top:5px}.thread{width:58px;height:40px;right:-5px;bottom:-5px}.notebook{padding:26px 19px 24px}.notebook-top h2{font-size:20px}.notebook-top .eyebrow{font-size:7px;letter-spacing:1px}.text-button{font-size:10px}.text-button span{margin-left:2px}.week-toolbar{margin:23px 0 19px;padding-top:19px;gap:8px}.week-range{font-size:17px;letter-spacing:0}.week-toolbar nav{gap:4px}.arrow{width:28px;height:32px;font-size:17px}.today{padding:0 7px;height:32px;font-size:10px}.muted{font-size:9px}.grid-header{grid-template-columns:repeat(7,1fr);gap:5px;padding-bottom:13px}.header-label,.count-heading{display:none}.habit-row{grid-template-columns:repeat(7,1fr);gap:5px;padding:14px 0 16px}.habit-info{grid-column:1/7;grid-row:1;margin-bottom:6px}.habit-name{flex:0 1 auto;font-size:13px}.habit-remove{padding:5px 9px}.row-count{grid-column:7;grid-row:1;margin-bottom:6px;font-size:10px}.row-count strong{font-size:18px}.stitch{width:32px;height:32px;grid-row:2}.weekly-summary{padding:15px 13px;margin-top:20px;gap:13px}.summary-label{font-size:10px}.weekly-summary strong{font-size:25px}.progress-wrap{width:40%}#progress-text{font-size:9px;line-height:1.5;display:block}.input-row{gap:6px}input{font-size:12px;padding:12px 10px}.primary{padding:11px 10px;font-size:11px;white-space:nowrap}.primary span{margin-left:2px}.bottom-notes{grid-template-columns:1fr;gap:26px;padding:32px 8px 10px}.bottom-notes p{font-size:11px}footer{font-size:8px;letter-spacing:0}footer>span:last-child{display:none}.status{font-size:11px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
