:root{color:#102a4c;font-synthesis:none;--teal:#008c95;--border:#d9e3ec;--muted:#60718c;background:#f4f7fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:8px 12px;display:inline-flex}button:hover{background:#e8f7f7}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #145184}a{color:#145184;text-underline-offset:3px;overflow-wrap:anywhere;align-items:center;gap:8px;min-height:44px;display:inline-flex}input,select,textarea{border:1px solid var(--border);background:#fff;border-radius:10px;width:100%;min-width:0;min-height:44px;padding:8px 10px}textarea{resize:vertical}h1,h2,p{margin:0}h1{font-size:22px;line-height:1.4}h2{font-size:16px;line-height:1.4}p{line-height:1.5}strong{font-weight:700}.icon{flex-shrink:0;width:24px;height:24px}.app{max-width:720px;height:100dvh;min-height:100svh;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);background:#fff;grid-template-rows:auto minmax(0,1fr) auto;margin:auto;display:grid}header{height:calc(48px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 12px 0;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}header>div{gap:4px;display:flex}header button{border:0;min-width:44px;padding:0 8px}header .brand{gap:8px;padding:0;font-size:18px;font-weight:800}header .brand img{width:30px;height:30px}header button span{font-size:14px}main{overscroll-behavior:contain;min-height:0;position:relative;overflow:auto}nav{height:calc(60px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);border-top:1px solid var(--border);background:#fff;display:flex}nav a{min-width:0;color:var(--muted);flex-direction:column;flex:1;justify-content:center;gap:2px;font-size:12px;text-decoration:none;display:flex}nav a[aria-current]{color:var(--teal);background:#f4fbfb;font-weight:700}.home{flex-direction:column;gap:12px;padding:12px;display:flex}.home-title p{color:var(--muted);font-size:14px;line-height:20px}.home-title h1{line-height:28px}.summary{background:#f4f7fa;border-radius:12px;justify-content:space-between;align-items:center;min-height:80px;padding:8px 16px;display:flex}.summary span{font-size:14px}.big{margin:2px 0;font-size:28px;font-weight:800;line-height:1.2}.progress-ring{background:conic-gradient(var(--teal) var(--progress), #d9e3ec 0);border-radius:50%;flex-shrink:0;place-items:center;width:64px;height:64px;display:grid}.progress-ring strong{background:#fff;border-radius:50%;place-items:center;width:46px;height:46px;display:grid}.stamp-link{border:1.5px solid var(--teal);flex-shrink:0;min-height:44px;font-size:18px;font-weight:700}.stamp-link>.icon:first-child,.stamp-link>.icon:last-child{margin-left:auto}.diocese{border:1px solid var(--border);border-radius:12px;flex-shrink:0;overflow:hidden}.section-title{background:#f4f7fa;justify-content:space-between;align-items:center;height:32px;padding-left:12px;display:flex}.section-title button{z-index:1;background:0 0;border:0;width:44px;padding:0;position:relative}.section-title .icon{width:20px;height:20px}.diocese-row{text-align:left;border:0;border-bottom:1px solid #edf1f5;border-radius:0;grid-template-columns:100px 1fr 16px;gap:12px;width:100%;min-height:32px;padding:4px 12px;font-size:14px;display:grid}.diocese-row .icon{width:16px;height:16px}.diocese-row>span{font-size:14px;line-height:16px}.track{background:#e2e9f1;border-radius:8px;height:5px;margin-top:2px;display:block;overflow:hidden}.track>span{background:var(--teal);border-radius:8px;height:100%;display:block}.all-dioceses{border:0;border-radius:0;justify-content:space-between;width:100%;height:44px}.recommendation{background:#e8f7f7;border-radius:10px;align-items:center;gap:10px;min-height:44px;padding:6px 10px;display:flex}.recommendation>div{flex:1;align-items:center;gap:4px;display:flex}.recommendation span{font-size:14px}.recommendation button{color:var(--teal);background:0 0;border:0;flex-shrink:0;padding:0 4px;font-size:14px;font-weight:700}.button-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.entry-buttons button{white-space:nowrap;padding:8px;font-size:16px}.primary{background:var(--teal);color:#fff;border-color:var(--teal);font-weight:700}.primary:hover{background:#007580}.secondary{color:#fff;background:#145184;border-color:#145184;font-weight:700}.icon{opacity:.9}.primary .icon,.secondary .icon{filter:brightness(0)invert()}.explore-main{flex-direction:column;display:flex}.explore-controls{flex-direction:column;flex-shrink:0;gap:8px;padding:12px 12px 0;display:flex}.search{border:1px solid var(--border);background:#f4f7fa;border-radius:10px;align-items:center;padding-left:12px;display:flex}.search input{background:0 0;border:0}.search button{white-space:nowrap;background:0 0;border:0}.segments{border:1px solid var(--border);background:#f4f7fa;border-radius:10px;min-height:44px;display:flex;overflow:hidden}.segments button{white-space:nowrap;background:0 0;border:0;border-radius:8px;flex:1;padding:8px 4px}.segments button[aria-pressed=true]{background:var(--teal);color:#fff;font-weight:700}.filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.filters select{flex:1;width:120px}.filters button{flex-shrink:0;padding:8px}.result-count{color:var(--muted);padding:0 0 8px;font-size:14px}.place-list{flex:1;min-height:0;overflow:auto}.place-row{text-align:left;border:0;border-bottom:1px solid var(--border);border-radius:0;justify-content:space-between;width:100%;min-height:80px;padding:12px 16px;display:flex}.place-row>div{flex-direction:column;gap:3px;min-width:0;display:flex}.place-row strong{overflow-wrap:anywhere}.muted,.small{color:var(--muted);font-size:14px}.small{font-size:12px}.empty{text-align:center;color:var(--muted);padding:24px 16px}.empty h2{margin-bottom:8px}.map-area{flex:1;min-height:240px;position:relative}.map-wrap,.map-canvas{width:100%;height:100%;min-height:240px}.map-wrap{background:#f4f7fa;position:relative}.map-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;display:flex;position:absolute;inset:0}.map-empty img{width:36px;height:36px}.map-empty p{max-width:300px;color:var(--muted);font-size:14px}.map-notice{z-index:2;background:#fff;border-radius:10px;padding:8px;font-size:14px;position:absolute;top:12px;left:12px;right:70px}.map-buttons{z-index:3;flex-direction:column;gap:8px;display:flex;position:absolute;top:12px;right:12px}.map-buttons button{border-radius:50%;width:44px;height:44px;padding:8px}.compact-inline{border-top:1px solid var(--border);align-items:center;gap:8px;padding:12px;display:flex}.detail{flex-direction:column;gap:16px;padding:16px;display:flex}.detail>button:first-child{align-self:flex-start}.eyebrow{color:var(--teal);font-size:14px;font-weight:700}.badge{color:#007580;background:#e8f7f7;border-radius:6px;padding:4px 8px;font-size:14px;display:inline-block}.hint{color:var(--muted);padding:8px 0;font-size:14px;line-height:1.5}.links{flex-direction:column;display:flex}.detail dl{grid-template-columns:85px minmax(0,1fr);gap:12px 8px;margin:0;display:grid}.detail dt{color:var(--muted);font-size:14px}.detail dd{overflow-wrap:anywhere;margin:0}.visit-row{border-top:1px solid var(--border);padding:12px 0}.visit-row p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.visit-row button{margin-right:8px}.events-page{flex-direction:column;gap:8px;padding:12px;display:flex}.subtitle{color:var(--muted);font-size:14px}.month{justify-content:space-between;align-items:center;gap:4px;display:flex}.month>button{min-width:44px;padding:8px}.month label{flex:1;min-width:0}.month input{border:0;padding:8px 0;font-weight:700}.checkbox{align-items:center;gap:8px;min-height:44px;font-size:14px;display:flex}.checkbox input{width:20px;height:20px;min-height:20px;accent-color:var(--teal);flex-shrink:0}.event-card{border:0;border-bottom:1px solid var(--border);text-align:left;border-radius:0;grid-template-columns:62px minmax(0,1fr);align-items:start;gap:12px;width:100%;padding:16px 0;display:grid}.event-card h2{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:17px;display:-webkit-box;overflow:hidden}.event-card p{color:var(--muted);margin-top:5px;font-size:14px}.date-block{color:#007580;background:#e8f7f7;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;display:flex}.date-block strong{font-size:28px}.date-block span{font-size:12px}.deadline{color:#815300;overflow-wrap:anywhere;background:#fff5db;border-radius:6px;margin-top:8px;padding:4px 6px;font-size:12px;display:inline-block}.source-text{color:#145184;margin-top:8px;font-size:14px;display:inline-block}.settings-actions{flex-direction:column;gap:8px;display:flex}.settings-actions a{border:1px solid var(--border);border-radius:10px;padding:8px 12px}.backdrop{z-index:20;padding-top:env(safe-area-inset-top,0px);background:#102a4c66;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:720px;max-height:94dvh;padding-bottom:env(safe-area-inset-bottom,0px);background:#fff;border-radius:16px 16px 0 0;flex-direction:column;display:flex;box-shadow:0 -8px 30px #102a4c22}.modal-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.modal-header button{border:0;width:44px}.modal-content{flex-direction:column;gap:16px;min-height:0;padding:16px;display:flex;overflow:auto}.modal-content .diocese-row{min-height:44px}.modal-content form{flex-direction:column;gap:12px;display:flex}.modal-content label:not(.checkbox){flex-direction:column;gap:6px;display:flex}.detail form{flex-direction:column;gap:12px;display:flex}.alert{color:#815300;background:#fff5db;padding:12px;font-size:14px}.alert button{margin-left:8px}.toast{z-index:30;left:50%;bottom:calc(72px + env(safe-area-inset-bottom,0px));background:#e8f7f7;border:1px solid #b8dede;border-radius:12px;justify-content:space-between;align-items:center;width:calc(100% - 24px);max-width:680px;padding:8px 12px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 4px 16px #102a4c22}.toast button{background:0 0;border:0;flex-shrink:0;width:44px}.danger{color:#b42318;border-color:#b42318}.sr-only{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}pre{white-space:pre-wrap;overflow-wrap:anywhere}.keyboard-open nav{display:none}@media (height<=659px){.home .recommendation{display:none}}@media (height>=660px) and (height<=700px){.home{gap:10px}.home-title p{font-size:14px}.recommendation{min-height:44px}}@media (width<=374px){header button span{display:none}.entry-buttons button{font-size:14px}.home .recommendation span{font-size:12px}}@media (width>=721px){.app{border-left:1px solid var(--border);border-right:1px solid var(--border)}.home{gap:16px;padding:20px}.summary{min-height:110px}.diocese-row{min-height:44px}.recommendation{min-height:64px}}@media (prefers-reduced-motion:no-preference){button,a{transition:background-color .15s}}:root .toast{pointer-events:none}:root .toast button{pointer-events:auto}:root .summary{padding-top:4px;padding-bottom:4px}:root .diocese-row,:root .modal-content .diocese-row{min-height:44px}:root .section-title{height:44px}:root .summary .big{margin:0;line-height:1}:root .home{gap:12px}:root .home-title{background:#eef7fa url(/assets/pilgrimage-hero.webp) 100%/cover no-repeat;border-radius:16px;flex-direction:column;justify-content:center;min-height:118px;padding:18px 12px;display:flex;overflow:hidden}.home-title h1{letter-spacing:-.8px;font-size:23px;position:relative}.home-title p{color:#39546b;text-wrap:balance;max-width:210px;margin-top:6px;font-size:12px}.hero-eyebrow{color:#277078;margin-bottom:5px;font-size:11px;font-weight:600}:root .summary{background:linear-gradient(115deg,#eff8f8,#f4f7fb);border:1px solid #dbe9ed;border-radius:16px;min-height:116px;padding:16px 20px}:root .summary .big{letter-spacing:-1px;margin:7px 0;font-size:32px}.summary .progress-ring{width:76px;height:76px;box-shadow:0 3px 12px #102a4c09}.summary .progress-ring strong{width:58px;height:58px;font-size:19px}:root .home .diocese-row{height:44px;min-height:44px}.home .diocese{border-radius:14px;flex-shrink:0}.home .section-title,.home .all-dioceses{background:#f8fafc}nav .icon{width:27px;height:27px}nav a[aria-current] .icon{filter:none}nav a[aria-current]{box-shadow:inset 0 3px var(--teal);background:linear-gradient(#eaf8f6,#fff)}.stamp-link .icon:first-child,.entry-buttons .icon{width:27px;height:27px}.boot-loader{z-index:60;color:#102a4c;background:#f8fcfc;flex-direction:column;justify-content:center;align-items:center;gap:14px;max-width:720px;margin:auto;display:flex;position:fixed;inset:0}.boot-loader strong{letter-spacing:-.8px;font-size:25px}.boot-loader p{color:#60718c;font-size:14px}.loading-emblem{place-items:center;width:108px;height:118px;display:grid;position:relative}.loading-emblem img{border-radius:24%;width:74px;height:74px;animation:1.8s ease-in-out infinite pilgrim-float;box-shadow:0 12px 24px #008c9520}.loading-emblem span{background:#008c95;border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pilgrim-step;position:absolute;bottom:0}.loading-emblem span:nth-child(2){left:35px}.loading-emblem span:nth-child(3){animation-delay:.15s;left:51px}.loading-emblem span:nth-child(4){animation-delay:.3s;left:67px}@keyframes pilgrim-float{50%{transform:translateY(-7px)}}@keyframes pilgrim-step{0%,80%,to{opacity:.25;transform:scale(.7)}40%{opacity:1;transform:scale(1)}}@media (height<=700px){:root .home{gap:8px}:root .home-title{min-height:100px;padding:12px}:root .summary{min-height:104px;padding:12px 16px}}@media (prefers-reduced-motion:reduce){.loading-emblem img,.loading-emblem span{animation:none}}.entry-buttons .icon{filter:none;background:#fff;border-radius:7px;width:28px;height:28px;padding:3px}
