:root{--ink:#222823;--forest:#264d3d;--paper:#f5f3eb;--white:#fffef9;--muted:#6f776e;--line:#d9ddd3;--font-display:'Noto Serif KR',Georgia,serif;--font-body:'Noto Sans KR',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);line-height:1.65}body.modal-open{overflow:hidden}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:3px solid #9ab9a8;outline-offset:3px}.site-shell{max-width:1600px;margin:auto}.site-header{height:84px;display:flex;align-items:center;gap:50px;padding:0 clamp(24px,5.4vw,88px);border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:700;font-size:22px;white-space:nowrap}.brand-mark{font-size:43px;line-height:.5;color:var(--forest);transform:translateY(7px)}.site-header nav{display:flex;gap:34px;font-size:14px}.site-header nav a{text-decoration:none}.site-header nav a:hover{text-decoration:underline;text-underline-offset:5px}.header-note{margin-left:auto;color:var(--muted);font-size:12px;letter-spacing:.04em}.hero{display:grid;grid-template-columns:1.05fr .95fr;min-height:620px;padding:72px clamp(24px,5.4vw,88px) 84px;gap:clamp(38px,6vw,100px);align-items:center}.eyebrow{margin:0 0 24px;color:var(--forest);font-size:11px;font-weight:700;letter-spacing:.19em}.hero h1{font-family:var(--font-display);font-size:clamp(42px,4.2vw,68px);line-height:1.42;letter-spacing:-.065em;margin:0 0 28px;font-weight:600}.hero h1 em{color:var(--forest);font-style:normal}.hero-description{max-width:490px;margin:0 0 34px;color:#545e54;font-size:16px;line-height:1.9;word-break:keep-all}.primary-link{display:inline-flex;align-items:center;justify-content:space-between;gap:42px;min-width:225px;min-height:53px;padding:12px 20px;background:var(--forest);color:white;text-decoration:none;border-radius:8px;font-weight:600;font-size:14px;transition:transform .2s,background .2s}.primary-link:hover{background:#1b3b2e;transform:translateY(-2px)}.primary-link span{font-size:21px;font-weight:400}.hero-foot{color:#899087;font-size:12px;margin:20px 0 0}.hero-visual{position:relative;background:var(--forest);border-radius:180px 180px 10px 10px;aspect-ratio:1/1.06;max-height:525px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#f4f3e9;box-shadow:15px 16px 0 #dfe4d9;overflow:hidden}.hero-visual:before,.hero-visual:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.16);border-radius:50%;width:560px;height:560px;left:50%;top:50%;transform:translate(-50%,-50%)}.hero-visual:after{width:460px;height:460px}.hero-quote{font-family:var(--font-display);font-size:100px;line-height:.6;color:#a8c1a4;z-index:1;align-self:flex-start;margin-left:21%;transform:translateY(-8px)}.hero-visual p{font-family:var(--font-display);font-size:clamp(32px,3.2vw,50px);line-height:1.65;text-align:center;z-index:1;margin:0;letter-spacing:-.06em}.hero-rule{width:40px;border-top:1px solid #9fb8a5;margin-top:36px;z-index:1}.hero-page{position:absolute;bottom:28px;font-size:10px;letter-spacing:.17em;color:#b5c8b5}.shelf{background:var(--white);padding:90px clamp(24px,5.4vw,88px) 110px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:48px}.section-heading .eyebrow,.how .eyebrow{margin-bottom:13px}.section-heading h2,.how h2{font:600 clamp(30px,3vw,42px)/1.4 var(--font-display);letter-spacing:-.06em;margin:0}.section-heading>p{margin:0 0 5px;color:var(--muted);font-size:14px}.shelf-toolbar{display:flex;justify-content:space-between;align-items:center;gap:25px;border-bottom:1px solid var(--line)}.filters{display:flex;gap:4px;overflow:auto}.filter{padding:13px 20px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);white-space:nowrap;font-size:14px}.filter:hover{color:var(--forest)}.filter.active{color:var(--forest);border-color:var(--forest);font-weight:700}.search-wrap{width:255px;position:relative;flex:0 0 auto;margin-bottom:8px}.search-wrap svg{position:absolute;left:12px;top:12px;width:18px;height:18px;fill:none;stroke:#829087;stroke-width:1.6}.search-wrap input{width:100%;height:42px;padding:0 34px 0 38px;background:#f8f9f5;border:1px solid var(--line);border-radius:8px;color:var(--ink);font-size:13px}.search-wrap input::placeholder{color:#929a91}.results-bar{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin:22px 0 19px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{min-height:285px;padding:26px 25px 22px;background:#fff;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;transition:transform .2s,border-color .2s,box-shadow .2s}.card:hover{transform:translateY(-4px);border-color:#9caf9f;box-shadow:0 12px 32px rgba(35,61,43,.08)}.card-top{display:flex;justify-content:space-between;gap:12px;align-items:center}.category-label{display:inline-flex;align-items:center;color:var(--forest);font-size:11px;font-weight:700;letter-spacing:.02em}.card-length{font-size:11px;color:#899187}.card h3{font:600 22px/1.45 var(--font-display);letter-spacing:-.045em;margin:22px 0 7px}.card-author{color:var(--muted);font-size:12px;margin:0}.card-excerpt{font:400 15px/1.85 var(--font-display);color:#4f5b50;margin:16px 0 24px;flex:1;word-break:keep-all}.card-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #edf0e9;padding-top:15px}.card-source{font-size:11px;color:#8a9489}.card button{border:0;background:none;color:var(--forest);font-size:13px;font-weight:700;padding:5px}.card button:hover{text-decoration:underline;text-underline-offset:4px}.completed-badge{color:var(--forest);font-weight:700}.empty{padding:65px 20px;text-align:center;color:var(--muted)}.how{background:#e8ede4;padding:65px clamp(24px,5.4vw,88px);display:grid;grid-template-columns:1fr 1fr;gap:30px}.how-steps{display:grid;gap:4px}.how-steps p{margin:0;padding:15px 0;border-bottom:1px solid #cdd7ca;font-size:14px}.how-steps strong{color:var(--forest);font-size:12px;margin-right:22px}.site-footer{min-height:95px;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px clamp(24px,5.4vw,88px);color:var(--muted);font-size:12px}.site-footer span:first-child{font:700 18px var(--font-display);color:var(--forest)}.practice-backdrop{position:fixed;inset:0;z-index:5;background:rgba(18,32,24,.72);display:grid;place-items:center;padding:24px;overflow:auto}.practice-backdrop[hidden]{display:none}.practice{width:min(820px,100%);max-height:calc(100vh - 48px);overflow:auto;background:var(--white);border-radius:14px;padding:30px clamp(25px,4vw,58px) 34px;box-shadow:0 25px 80px #0d211860}.practice-top,.practice-heading,.practice-feedback,.practice-bottom{display:flex;align-items:center;justify-content:space-between;gap:15px}.practice-label{font-size:11px;letter-spacing:.13em;font-weight:700;color:var(--forest)}.close-button{border:0;background:#f0f3ed;width:36px;height:36px;border-radius:50%;font-size:24px;color:var(--forest);line-height:1}.practice-heading{align-items:end;margin:28px 0 22px}.practice-heading h2{font:600 clamp(29px,3vw,38px)/1.3 var(--font-display);margin:5px 0 6px}.practice-heading p{margin:0;color:var(--muted);font-size:13px}.practice-index{font:400 44px var(--font-display);color:#d3dcd0}.progress-track{width:100%;height:5px;background:#e5eae1;border-radius:10px;overflow:hidden}.progress-track span{display:block;height:100%;width:0;background:var(--forest);transition:width .2s}.practice-help{font-size:12px;color:var(--muted);margin:18px 0 12px}.target-text{font:400 20px/2 var(--font-display);letter-spacing:-.025em;padding:25px 25px;background:#f1f4ee;border-radius:8px;white-space:pre-wrap;min-height:124px;word-break:keep-all}.target-text .matched{color:var(--forest);background:#dce8d9}.target-text .wrong{background:#f8dfd9;color:#a13f37}.target-text .remaining{color:#3b463b}.input-label{display:block;font-size:13px;font-weight:700;margin:23px 0 8px}.practice textarea{display:block;width:100%;resize:none;padding:15px 17px;border:1px solid #bdcbbd;border-radius:8px;background:white;color:var(--ink);line-height:1.8;font-size:16px;min-height:132px}.practice textarea:focus{outline:2px solid #6c9975;outline-offset:1px}.practice-feedback{min-height:44px;font-size:12px;color:var(--muted);align-items:start;margin-top:10px}.practice-feedback .success{color:var(--forest);font-weight:700}.practice-feedback .error{color:#a13f37}.practice-bottom{border-top:1px solid var(--line);padding-top:16px;font-size:12px}.practice-bottom a{color:var(--forest);text-decoration:none}.practice-bottom a:hover{text-decoration:underline}.text-button{color:var(--forest);border:0;background:transparent;padding:6px 0;font-weight:700}@media(max-width:950px){.hero{min-height:unset}.hero-visual{max-height:none}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.header-note{display:none}}@media(max-width:700px){.site-header{height:67px;gap:20px}.brand{font-size:19px}.site-header nav{margin-left:auto;gap:14px;font-size:12px}.hero{grid-template-columns:1fr;padding-top:54px;padding-bottom:64px;gap:55px}.hero h1{font-size:40px}.hero-visual{width:min(420px,85%);justify-self:center;max-height:410px}.hero-visual p{font-size:clamp(28px,6vw,34px)}.shelf{padding-top:67px;padding-bottom:75px}.section-heading{display:block;margin-bottom:30px}.section-heading>p{margin-top:12px}.shelf-toolbar{display:block}.filters{margin:0 -24px;padding:0 20px}.filter{padding:12px 13px}.search-wrap{width:100%;margin:14px 0}.cards{grid-template-columns:1fr}.card{min-height:250px}.how{grid-template-columns:1fr;padding-top:55px;padding-bottom:60px}.site-footer{align-items:start;flex-direction:column}.practice-backdrop{padding:0;align-items:stretch}.practice{border-radius:0;max-height:100vh;min-height:100vh}.practice-heading{margin-top:20px}.target-text{font-size:17px;padding:17px}.practice textarea{font-size:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
.growth{padding:83px clamp(24px,5.4vw,88px) 94px;background:#eef2e9}.growth-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:30px}.growth-heading .eyebrow{margin-bottom:10px}.growth-heading h2{font:600 clamp(30px,3vw,42px)/1.4 var(--font-display);letter-spacing:-.06em;margin:0 0 10px}.growth-heading p:last-child{margin:0;color:var(--muted);font-size:14px}.growth-privacy{font-size:12px;color:var(--muted);padding-bottom:4px}.growth-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:14px}.daily-goal,.growth-stat,.week-panel{background:var(--white);border:1px solid #d7e0d3;border-radius:14px;padding:25px 27px}.stat-label{display:block;color:var(--forest);font-size:12px;font-weight:700;margin-bottom:13px}.daily-goal strong,.growth-stat strong{font:600 36px/1.3 var(--font-display);letter-spacing:-.05em;display:block}.daily-goal strong small,.growth-stat strong small{font:500 15px var(--font-body);color:var(--muted);letter-spacing:0}.daily-goal p,.growth-stat p{font-size:12px;color:var(--muted);margin:14px 0 0}.daily-track{height:7px;background:#e4ebe1;border-radius:20px;margin-top:21px;overflow:hidden}.daily-track span{height:100%;display:block;background:var(--forest);width:0;transition:width .25s}.week-panel{margin-top:14px;padding:23px 27px 25px}.week-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.week-title h3{font:600 19px var(--font-display);margin:0}.week-title span{color:var(--muted);font-size:12px}.week-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:17px;max-width:600px;margin:22px auto 0}.week-day{height:105px;display:flex;align-items:center;flex-direction:column;gap:5px;color:var(--muted);font-size:12px}.bar-count{height:17px;color:var(--forest);font-weight:700}.bar-track{height:65px;width:100%;max-width:50px;border-radius:5px;background:#e7ece3;display:flex;align-items:end;overflow:hidden}.bar-fill{width:100%;background:#6f9878;border-radius:5px 5px 0 0;min-height:0}.result[hidden]{display:none}.result{background:#eaf0e6;border:1px solid #cddbc9;border-radius:11px;padding:25px 27px;margin:16px 0 20px}.result-head{display:flex;justify-content:space-between;align-items:end;gap:15px}.result-kicker{color:var(--forest);font-size:11px;font-weight:700;letter-spacing:.1em}.result h3{font:600 23px var(--font-display);margin:5px 0 0}.result-head>strong{color:var(--forest);font:700 48px/1 var(--font-display)}.result-head>strong small{font:600 14px var(--font-body);margin-left:3px}.result-metrics{display:grid;grid-template-columns:repeat(3,1fr);margin-top:24px;border-top:1px solid #cbd9c7;border-bottom:1px solid #cbd9c7}.result-metrics div{padding:16px 8px 16px 0;display:grid;gap:3px}.result-metrics div+div{padding-left:18px;border-left:1px solid #cbd9c7}.result-metrics span{font-size:11px;color:var(--muted)}.result-metrics strong{font:600 18px var(--font-display);color:var(--ink)}.result-note{font-size:12px;margin:16px 0 3px;color:var(--forest)}.score-help{font-size:11px;color:var(--muted);margin:0 0 16px}.next-button{border:0;background:var(--forest);color:white;border-radius:8px;padding:11px 17px;font-size:13px;font-weight:700}.next-button:hover{background:#1b3b2e}@media(max-width:700px){.growth{padding-top:63px;padding-bottom:70px}.growth-heading{display:block}.growth-privacy{display:block;margin-top:12px}.growth-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-goal{grid-column:1/-1}.daily-goal,.growth-stat,.week-panel{padding:20px}.growth-stat strong{font-size:27px}.week-bars{gap:8px}.result{padding:18px}.result-metrics strong{font-size:15px}.result-metrics div+div{padding-left:9px}}

.hero-tagline{margin:0 0 20px;color:var(--forest);font:600 clamp(19px,2vw,25px)/1.5 var(--font-display);letter-spacing:-.045em}

/* The writing surface is one shared line of text: input sits over its printed guide. */
.practice .input-label{margin:20px 0 10px;color:var(--forest)}
.writing-sheet{position:relative;min-height:188px;border:1px solid #cbd6c8;border-radius:10px;background:#f3f6f0;overflow:hidden;cursor:text}
.writing-sheet:focus-within{border-color:#6d9877;box-shadow:0 0 0 3px #c7dcca}
.writing-sheet .target-text,.writing-sheet textarea{font:400 24px/2 var(--font-display);letter-spacing:-.025em;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere;padding:23px 26px;margin:0;border:0;border-radius:0;box-sizing:border-box}
.writing-sheet .target-text{min-height:188px;background:transparent;color:#7e8b7d;pointer-events:none}
.writing-sheet .target-text .remaining{color:#7e8b7d}
.writing-sheet .target-text .matched{color:var(--forest);background:none}
.writing-sheet .target-text .wrong{color:#b24238;background:#fae4dd;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.writing-sheet .target-text .space{position:relative}
.writing-sheet .target-text .space.remaining::after,.writing-sheet .target-text .space.next-char::after{content:'·';position:absolute;left:50%;top:0;transform:translateX(-50%);color:#76947b;font-family:var(--font-body);font-size:.76em;font-weight:700;line-height:2.45}
.writing-sheet .target-text .space.next-char{background:rgba(103,150,108,.16);border-radius:3px}
.writing-sheet .target-text .space.next-char::after{color:#265f3b}
.writing-sheet .target-text .line-break{position:relative;display:inline-block;width:0;height:1em;vertical-align:baseline}
.writing-sheet .target-text .line-break.remaining::after,.writing-sheet .target-text .line-break.next-char::after{content:'↵';position:absolute;left:0;top:0;color:#688b70;font:600 .73em/1.5 var(--font-body)}
.writing-sheet .target-text .line-break.next-char::after{color:#265f3b;background:#e0ecdc;border-radius:3px}
.writing-label-row{display:flex;justify-content:space-between;align-items:end;gap:12px}
.writing-key{color:#57775d;font-size:12px;white-space:nowrap}
.writing-sheet textarea{position:absolute;inset:0;width:100%;height:100%;min-height:0;resize:none;overflow:hidden;background:transparent;color:transparent;-webkit-text-fill-color:transparent;caret-color:var(--forest);outline:none}
.writing-sheet textarea:focus{outline:none}
.writing-sheet textarea::selection{background:#b7d3bc;color:transparent}
@media(max-width:700px){.writing-sheet .target-text,.writing-sheet textarea{font-size:20px;line-height:1.95;padding:19px 20px}.writing-key{font-size:11px}}
.filters{min-width:0;flex:1}
.collection-note{margin:15px 0 0;color:var(--muted);font-size:12px;line-height:1.65}
.my-import{margin:0 0 24px;padding:18px 22px;border:1px solid var(--line);border-radius:10px;background:#f5f7f1}.my-import summary{cursor:pointer;color:var(--forest);font-weight:700}.my-import p{font-size:13px;color:var(--muted)}.my-import label{display:block;margin:12px 0;font-size:13px}.my-import input,.my-import textarea{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #bdcbbd;border-radius:6px;background:white}.my-import button{border:0;border-radius:7px;background:var(--forest);color:white;padding:11px 18px}
