:root{--bg:#f5f7f1;--card:#ffffff;--ink:#172016;--muted:#7a8376;--green:#3f7b4a;--green2:#dfeadb;--line:#e5e9e1;--cream:#f7efe3}*{box-sizing:border-box}body,html{margin:0;background:#edf1ea;color:var(--ink);font-family:Arial,Apple SD Gothic Neo,Noto Sans KR,sans-serif}a,button{font:inherit}button{cursor:pointer}.app-shell,body{min-height:100vh}.app-shell{width:100%;max-width:480px;margin:0 auto;background:var(--bg);padding-bottom:88px;position:relative;box-shadow:0 0 30px rgba(31,55,33,.06)}.page{padding:24px 18px}.brand-row,.calendar-head,.feed-meta,.page-header,.person-row,.profile-card,.progress-card>div,.section-title,.stat-row,.today-meeting{display:flex;align-items:center}.brand-row,.calendar-head,.page-header,.section-title{justify-content:space-between}.brand{font-size:24px;font-weight:800;display:flex;gap:8px;align-items:center;color:#244f2b}.brand svg{color:#4b8b55}.muted{color:var(--muted);font-size:13px;margin:5px 0 0}.streak{background:#fff4da;padding:8px 11px;border-radius:99px;font-size:12px;display:flex;align-items:center;gap:4px;color:#a56718}.hero{margin:22px 0 14px;padding:28px 24px;border-radius:26px;background:linear-gradient(145deg,#eef4e8,#f6eadf);border:1px solid rgba(255,255,255,.8)}.hero .eyebrow{font-size:12px;color:#658269}.hero h1{font-size:26px;line-height:1.38;margin:12px 0}.hero>p:last-child{font-size:13px;color:#5c6859}.hero span{font-size:11px}.achievement,.calendar-card,.profile-card,.progress-card,.stage-card,.stat-card,.today-meeting{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px;margin-bottom:14px}.progress-card strong{font-size:14px}.progress-card span{font-size:12px;color:var(--muted)}.progress-card>div:first-child{justify-content:space-between}.progress-track{height:8px;border-radius:99px;background:#edf0ea;margin-top:12px;overflow:hidden}.progress-track div{height:100%;background:#6d9d73;border-radius:99px}.stack{display:grid;gap:11px}.routine-card{width:100%;display:flex;align-items:center;text-align:left;border:1px solid var(--line);background:white;border-radius:20px;padding:16px;gap:13px;color:var(--ink)}.routine-card.done{background:#f9fcf7}.routine-icon{font-size:26px}.routine-copy{display:flex;flex-direction:column;gap:4px;flex:1 1}.routine-copy strong{font-size:15px}.routine-copy small{color:var(--muted);font-size:12px}.check{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#edf3e9;color:#497e52}.done .check{background:#4f8a59;color:white}.icon-primary,.mini-primary,.primary{border:0;background:var(--green);color:white}.primary{width:100%;padding:15px;border-radius:15px;font-weight:700;margin-top:14px}.mini-primary{padding:10px 13px;border-radius:12px;font-size:12px}.icon-primary{width:39px;height:39px;border-radius:50%}.page-header h1{font-size:24px;margin:0}.filter-row{display:flex;gap:8px;margin:20px 0 14px;overflow:auto}.filter-row button{border:0;padding:8px 13px;border-radius:99px;background:#ecefe9;color:#687064;font-size:12px;white-space:nowrap}.filter-row .selected{background:#3f7448;color:white}.feed-card{background:white;border:1px solid var(--line);border-radius:20px;padding:16px}.feed-meta{gap:9px}.feed-meta>div:nth-child(2){flex:1 1}.feed-meta small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.avatar{width:38px;height:38px;border-radius:50%;background:#dce9db;display:grid;place-items:center;color:#376d40;font-weight:700}.avatar.big{width:52px;height:52px;font-size:19px}.avatar.soft{background:#e9eeea}.role-badge{font-size:9px;padding:3px 6px;border-radius:6px;background:#e4efe2;color:#4f7654;vertical-align:middle;margin-left:4px}.post-type{font-size:11px;color:#6d776a}.feed-card>p{font-size:14px;line-height:1.65;margin:14px 0}.actions{gap:8px}.actions,.actions button{display:flex;align-items:center}.actions button{border:0;background:#f4f6f2;padding:7px 10px;border-radius:99px;font-size:11px;gap:5px}.actions .pray{margin-left:auto;color:#3468a3;background:#eef5ff}.today-meeting{gap:10px;background:#edf4ea}.today-meeting div{flex:1 1;display:flex;flex-direction:column}.today-meeting strong{font-size:13px}.today-meeting span{font-size:11px;color:var(--muted);margin-top:3px}.today-meeting button{border:0;background:white;border-radius:10px;padding:8px 10px;font-size:11px}.section-title{margin:22px 2px 10px}.section-title h2{font-size:16px;margin:0}.section-title span{font-size:12px;color:var(--muted)}.people-list{background:white;border:1px solid var(--line);border-radius:20px;padding:3px 14px}.person-row{gap:11px;padding:13px 0;border-bottom:1px solid #edf0eb}.person-row:last-child{border-bottom:0}.grow{flex:1 1;display:flex;flex-direction:column}.grow strong{font-size:14px}.grow small{font-size:11px;margin-top:4px}.gray{color:#8b9188}.blue{color:#467fbd}.orange{color:#c6702a}.green{color:#4c8b55}.round-btn{border:1px solid var(--line);background:white;width:34px;height:34px;border-radius:50%}.stages{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.stages span{text-align:center;font-size:10px;color:#8b9188;padding-top:20px;position:relative}.stages span:before{content:"";position:absolute;top:5px;left:50%;width:8px;height:8px;border-radius:50%;background:#dce2dc}.stages .on{color:#3d7346;font-weight:700}.stages .on:before{background:#498153}.stage-card p{font-size:12px;color:#727a6f;line-height:1.6;margin:18px 0 0}.profile-card{gap:12px}.profile-card strong{font-size:15px}.profile-card p{font-size:12px;color:var(--muted);margin:5px 0}.calendar-head{margin-bottom:12px}.calendar-head button{border:0;background:none;font-size:25px}.days,.week{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.week span{text-align:center;color:#a1a79e;font-size:10px}.days span{aspect-ratio:1;display:grid;place-items:center;border-radius:50%;font-size:11px;color:#7d857a}.days .active-day{background:#dcebdd;color:#376c40;font-weight:700}.stat-card{display:grid;gap:14px}.stat-row{gap:8px}.stat-row strong{font-size:12px;width:78px}.stat-row b{font-size:11px;width:32px;text-align:right}.bar{height:8px;background:#edf0ed;overflow:hidden;flex:1 1}.bar,.bar i{border-radius:99px}.bar i{display:block;height:100%;background:#6f9e75}.achievement{background:#eef5e9}.achievement strong{font-size:13px}.achievement p{font-size:12px;color:#637060;margin:8px 0 0}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(480px,100%);height:70px;border-top:1px solid #dde3da;background:rgba(255,255,255,.96);display:grid;grid-template-columns:repeat(4,1fr);z-index:10}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-decoration:none;color:#91988f;font-size:10px}.nav-item.active{color:#376f40;font-weight:700}.login-page{min-height:100vh;padding:140px 24px 40px;text-align:center;background:linear-gradient(#f7f9f3,#eef3eb)}.login-logo{font-size:45px}.login-page h1{font-size:34px;margin:12px 0 5px}.login-page>p{color:var(--muted)}.login-box{display:grid;gap:10px;margin:42px 0 20px}.social{height:52px;border-radius:15px;border:1px solid var(--line);font-weight:700}.kakao{background:#fee500;border-color:#fee500}.google{background:white}.email{background:#3f7448;color:white;border-color:#3f7448}.login-page>small{font-size:11px;color:#90978e}@media(min-width:700px){body{padding:24px 0}.app-shell{border-radius:28px;overflow:hidden;min-height:calc(100vh - 48px)}}.bottom-nav{grid-template-columns:repeat(3,1fr);height:calc(70px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.app-shell{padding-bottom:calc(88px + env(safe-area-inset-bottom))}.demo-notice{padding:10px 16px;background:#e4ecdf;color:#345b39;font-size:12px;text-align:center;line-height:1.5}button:disabled{cursor:default;opacity:.6}a:focus-visible,button:focus-visible{outline:3px solid #3977a3;outline-offset:3px}.hint{line-height:1.7;margin:14px 0}.days .current-day{border:2px solid var(--green);color:#244f2b;font-weight:700}.preview-link{display:block;background:var(--green);color:white;padding:15px;border-radius:15px;text-decoration:none}.muted{color:#626f5f}