:root{--fj-color-ivory-50:#fdfaf5;--fj-color-ivory-100:#faf6ef;--fj-color-ivory-200:#f6f1e9;--fj-color-ivory-300:#efe8dd;--fj-color-ivory-400:#e6ded2;--fj-color-ivory-500:#ddd3c6;--fj-color-ink-100:#c9bcab;--fj-color-ink-200:#a89c8e;--fj-color-ink-300:#8a7f74;--fj-color-ink-400:#6b6058;--fj-color-ink-500:#5c5249;--fj-color-ink-600:#4a423b;--fj-color-ink-700:#3b342e;--fj-color-ink-900:#201b17;--fj-color-clay-100:#f7ebe6;--fj-color-clay-200:#f0d5cc;--fj-color-clay-300:#dba38f;--fj-color-clay-400:#b85c41;--fj-color-clay-500:#9e4a33;--fj-color-clay-600:#8a3d29;--fj-color-clay-700:#6f2f1e;--fj-color-green-100:#edf3ee;--fj-color-green-500:#3f6b52;--fj-color-red-100:#fbeeeb;--fj-color-red-500:#a3271b;--fj-color-amber-100:#faf0dd;--fj-color-amber-500:#8a5a14;--fj-surface-page:var(--fj-color-ivory-200);--fj-surface-raised:var(--fj-color-ivory-50);--fj-surface-sunken:var(--fj-color-ivory-300);--fj-surface-inverse:var(--fj-color-ink-900);--fj-text-primary:var(--fj-color-ink-900);--fj-text-secondary:var(--fj-color-ink-500);--fj-text-tertiary:var(--fj-color-ink-300);--fj-text-on-accent:var(--fj-color-ivory-50);--fj-border-subtle:var(--fj-color-ivory-400);--fj-border-default:var(--fj-color-ivory-500);--fj-border-strong:var(--fj-color-ink-100);--fj-action-primary:var(--fj-color-clay-500);--fj-action-primary-hover:var(--fj-color-clay-600);--fj-action-primary-pressed:var(--fj-color-clay-700);--fj-action-disabled:var(--fj-color-ivory-400);--fj-status-danger:var(--fj-color-red-500);--fj-status-danger-surface:var(--fj-color-red-100);--fj-status-success:var(--fj-color-green-500);--fj-status-success-surface:var(--fj-color-green-100);--fj-status-warning:var(--fj-color-amber-500);--fj-status-warning-surface:var(--fj-color-amber-100);--fj-focus-ring:var(--fj-color-clay-500);--fj-space-1:4px;--fj-space-2:8px;--fj-space-3:12px;--fj-space-4:16px;--fj-space-5:20px;--fj-space-6:24px;--fj-space-8:32px;--fj-space-10:40px;--fj-space-14:56px;--fj-space-18:72px;--fj-radius-sm:6px;--fj-radius-md:10px;--fj-radius-lg:14px;--fj-radius-xl:20px;--fj-radius-sheet:24px 24px 0 0;--fj-radius-pill:999px;--fj-shadow-sm:0 1px 2px #201b170f;--fj-shadow-md:0 8px 24px -12px #201b173d;--fj-shadow-lg:0 24px 60px -32px #201b1757;--fj-font-heading:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--fj-font-body:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--fj-motion-duration-fast:.12s;--fj-motion-duration-base:.18s;--fj-motion-duration-slow:.24s;--fj-motion-easing-standard:cubic-bezier(.2, .8, .2, 1)}:focus-visible{outline:2px solid var(--fj-focus-ring);outline-offset:2px}::-moz-selection{color:var(--fj-text-on-accent);background:var(--fj-action-primary)}::selection{color:var(--fj-text-on-accent);background:var(--fj-action-primary)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}:root{font-family:var(--fj-font-body);color:var(--fj-text-primary);background:var(--fj-surface-page);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}html{background:var(--fj-surface-page)}body{min-width:320px;min-height:100dvh;margin:0}button,input,textarea,select{font:inherit}.ui-button{border-radius:var(--fj-radius-md);cursor:pointer;border:1px solid #0000;min-height:44px;padding:.75rem 1rem;font-weight:800}.ui-button:focus-visible{outline:3px solid var(--fj-color-clay-100);outline-offset:2px}.ui-input:focus-visible{outline:3px solid var(--fj-color-clay-100);outline-offset:2px}.ui-password button:focus-visible{outline:3px solid var(--fj-color-clay-100);outline-offset:2px}.ui-dialog button:focus-visible{outline:3px solid var(--fj-color-clay-100);outline-offset:2px}.ui-button:disabled{cursor:not-allowed;opacity:.55}.ui-button--primary{color:var(--fj-text-on-accent);background:var(--fj-action-primary)}.ui-button--secondary{border-color:var(--fj-border-default);color:var(--fj-text-primary);background:var(--fj-surface-raised)}.ui-button--ghost{color:var(--fj-action-primary);background:0 0}.ui-button--danger{color:var(--fj-text-on-accent);background:var(--fj-status-danger)}.ui-field{gap:.45rem;display:grid}.ui-field label{font-size:.86rem;font-weight:750}.ui-input{border:1px solid var(--fj-border-default);border-radius:var(--fj-radius-md);width:100%;min-height:48px;color:var(--fj-text-primary);background:var(--fj-surface-raised);padding:.8rem 1rem}.ui-field[data-invalid=true] .ui-input{border-color:var(--fj-status-danger)}.ui-field__hint,.ui-field__error{margin:0;font-size:.78rem;line-height:1.5}.ui-field__hint{color:var(--fj-text-secondary)}.ui-field__error{color:var(--fj-status-danger)}.ui-password{position:relative}.ui-password .ui-input{padding-right:4rem}.ui-password button{border-radius:var(--fj-radius-sm);color:var(--fj-action-primary);cursor:pointer;background:0 0;border:0;padding:0 .7rem;font-weight:750;position:absolute;top:4px;bottom:4px;left:auto;right:4px}.ui-alert{border:1px solid var(--fj-border-subtle);border-radius:var(--fj-radius-md);gap:.35rem;padding:.9rem 1rem;line-height:1.55;display:grid}.ui-alert--info{background:var(--fj-surface-sunken)}.ui-alert--success{color:var(--fj-status-success);background:var(--fj-status-success-surface)}.ui-alert--warning{color:var(--fj-status-warning);background:var(--fj-status-warning-surface)}.ui-alert--danger{color:var(--fj-status-danger);background:var(--fj-status-danger-surface)}.ui-badge{border-radius:var(--fj-radius-pill);align-items:center;min-height:24px;padding:.2rem .6rem;font-size:.74rem;font-weight:800;display:inline-flex}.ui-badge--neutral{color:var(--fj-text-secondary);background:var(--fj-surface-sunken)}.ui-badge--success{color:var(--fj-status-success);background:var(--fj-status-success-surface)}.ui-badge--warning{color:var(--fj-status-warning);background:var(--fj-status-warning-surface)}.ui-badge--danger{color:var(--fj-status-danger);background:var(--fj-status-danger-surface)}.ui-overlay{z-index:100;background:#201b178c;place-items:center;padding:1.25rem;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.ui-dialog{border-radius:var(--fj-radius-lg);background:var(--fj-surface-raised);width:min(100%,32rem);max-height:calc(100dvh - 2.5rem);box-shadow:var(--fj-shadow-lg);padding:1.5rem;overflow:auto}.ui-dialog__heading{justify-content:space-between;align-items:center;gap:1rem;display:flex}.ui-dialog__heading h2{margin:0}.ui-dialog__heading button{cursor:pointer;background:0 0;border:0;min-width:44px;min-height:44px;font-size:1.5rem}.ui-dialog__body{color:var(--fj-text-secondary);margin-top:1rem;line-height:1.65}.ui-dialog__actions{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.ui-overlay--sheet{align-items:end;padding:0}.ui-sheet{border-radius:var(--fj-radius-sheet) var(--fj-radius-sheet) 0 0;width:min(100%,40rem);max-height:85dvh;padding:1.5rem max(1.25rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));background:var(--fj-surface-raised);box-shadow:var(--fj-shadow-lg);overflow:auto}.ui-status{text-align:center;justify-items:center;max-width:30rem;margin:auto;padding:3rem 1.5rem;display:grid}.ui-status__mark{color:var(--fj-action-primary);font-size:2rem}.ui-status h2{margin:.75rem 0 0}.ui-status p{color:var(--fj-text-secondary);margin:.7rem 0 1.5rem;line-height:1.65}.app-shell{width:min(100%,72rem);min-height:100dvh;padding:max(2rem, env(safe-area-inset-top)) clamp(1.25rem, 5vw, 4rem) max(1.5rem, env(safe-area-inset-bottom));align-content:space-between;gap:4rem;margin:0 auto;display:grid}.hero{max-width:52rem}.eyebrow,.section-number{color:var(--fj-action-primary);letter-spacing:.18em;margin:0 0 1.5rem;font-size:.75rem;font-weight:800}h1{letter-spacing:-.075em;margin:0;font-size:max(3.4rem,min(10vw,7.5rem));font-weight:750;line-height:.92}.hero-copy{max-width:38rem;color:var(--fj-text-secondary);margin:2rem 0 0;font-size:max(1rem,min(2vw,1.2rem));line-height:1.75}.surface-list{gap:.5rem;margin-top:2rem;display:flex}.surface-list span{border:1px solid var(--fj-border-strong);border-radius:var(--fj-radius-pill);padding:.55rem .9rem;font-size:.8rem;font-weight:700}.principles{border-top:1px solid var(--fj-border-strong);grid-template-columns:minmax(10rem,.65fr) 1.35fr;gap:2rem;padding-top:1.5rem;display:grid}.principles h2{letter-spacing:-.045em;margin:0;font-size:max(1.8rem,min(4vw,3rem))}.principles ol{counter-reset:promise;margin:0;padding:0;list-style:none}.principles li{counter-increment:promise;border-bottom:1px solid var(--fj-border-subtle);grid-template-columns:2.5rem 1fr;gap:1rem;padding:1rem 0;line-height:1.6;display:grid}.principles li:before{content:counter(promise, decimal-leading-zero);color:var(--fj-action-primary);font-size:.75rem;font-weight:800}footer,.session-bar{color:var(--fj-text-secondary);justify-content:space-between;align-items:center;font-size:.85rem;display:flex}footer span{color:var(--fj-action-primary)}.session-bar{border-bottom:1px solid var(--fj-border-subtle);padding-bottom:1rem}.session-bar p{margin:0}.auth-page{grid-template-columns:minmax(20rem,1fr) minmax(28rem,38rem);min-height:100dvh;display:grid}.auth-story{background-color:var(--fj-surface-inverse);min-height:100dvh;color:var(--fj-text-on-accent);background-image:linear-gradient(#201b172e 25%,#201b17e6 100%),url(/family-login.private.jpg);background-position:top;background-size:cover;flex-direction:column;justify-content:space-between;padding:max(3rem,6vw);display:flex;position:relative;overflow:hidden}.auth-story>*{z-index:1;position:relative}.auth-story h1{font-size:max(3rem,min(6vw,6rem))}.photo-caption p{max-width:32rem;color:var(--fj-color-ivory-300);margin:1.5rem 0 0;font-size:1.05rem;line-height:1.8}.auth-card{width:min(100%,36rem);margin:auto;padding:3rem max(1.5rem,min(6vw,4.5rem))}.mode-switch{border-radius:var(--fj-radius-lg);background:var(--fj-surface-sunken);grid-template-columns:1fr 1fr;padding:.3rem;display:grid}.mode-switch button{border-radius:var(--fj-radius-md);color:var(--fj-text-secondary);cursor:pointer;background:0 0;border:0;padding:.8rem;font-weight:700}.mode-switch button.active{background:var(--fj-surface-raised);color:var(--fj-text-primary);box-shadow:var(--fj-shadow-sm)}.card-heading{margin:2.5rem 0 2rem}.card-heading .section-number{margin-bottom:.8rem}.card-heading h2{letter-spacing:-.04em;margin:0;font-size:2rem}.card-heading>p:last-child{color:var(--fj-text-secondary);margin:.7rem 0 0;line-height:1.6}.auth-card form{gap:.7rem;display:grid}.auth-card label{font-size:.86rem;font-weight:750}.auth-card input,.auth-card select{border:1px solid var(--fj-border-default);border-radius:var(--fj-radius-md);width:100%;min-height:48px;color:var(--fj-text-primary);background:var(--fj-surface-raised);outline:none;padding:.9rem 1rem}.auth-card input:focus,.auth-card select:focus{border-color:var(--fj-action-primary);box-shadow:0 0 0 3px var(--fj-color-clay-100)}.label-row{justify-content:space-between;align-items:center;margin-top:.5rem;display:flex}.text-button{color:var(--fj-action-primary);cursor:pointer;background:0 0;border:0;padding:.2rem;font-size:.82rem;font-weight:750}.primary-button,.google-button{cursor:pointer;border-radius:.7rem;width:100%;padding:.95rem 1rem;font-weight:800}.primary-button{border:1px solid var(--fj-action-primary);color:var(--fj-text-on-accent);background:var(--fj-action-primary);margin-top:.8rem}.google-button{border:1px solid var(--fj-border-default);color:var(--fj-text-primary);background:var(--fj-surface-raised)}.google-mark{color:#fff;background:#4285f4;border-radius:50%;place-items:center;width:1.5rem;height:1.5rem;margin-right:.6rem;font-weight:900;display:inline-grid}.divider{color:var(--fj-text-tertiary);align-items:center;gap:1rem;margin:1.5rem 0;font-size:.75rem;display:flex}.divider:before,.divider:after{content:"";background:var(--fj-border-subtle);flex:1;height:1px}.form-message{color:var(--fj-status-danger);margin:.2rem 0 0;font-size:.82rem;line-height:1.5}.demo-note{color:var(--fj-text-secondary);text-align:center;margin:1rem 0 0;font-size:.72rem;line-height:1.55}.field-help{color:var(--fj-text-secondary);margin:0 0 .4rem;font-size:.78rem;line-height:1.5}.status-card{border:1px solid var(--fj-border-subtle);border-radius:var(--fj-radius-lg);background:var(--fj-surface-raised);gap:.5rem;padding:1.25rem;display:grid}.status-card p{color:var(--fj-text-secondary);margin:0;line-height:1.6}.success-message{border-radius:var(--fj-radius-md);color:var(--fj-status-success);background:var(--fj-status-success-surface);padding:.85rem 1rem}.auth-back{width:100%;min-height:44px;margin-top:1rem}@media (max-width:56rem){html,body{max-width:100%;overflow-x:hidden}.auth-page{grid-template-columns:minmax(0,1fr);width:100%;overflow-x:hidden}.auth-card{width:auto;min-width:0;max-width:none;padding:2rem 1.5rem max(3rem, env(safe-area-inset-bottom));border-radius:var(--fj-radius-sheet);background:var(--fj-surface-raised);box-shadow:var(--fj-shadow-md);margin:-1.5rem 1.25rem 0;position:relative;overflow:hidden}.auth-card>*,.auth-card form,.auth-card input,.auth-card select,.auth-card button{min-width:0;max-width:100%}.mode-switch{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.auth-story{min-height:18rem;padding:max(2rem, env(safe-area-inset-top)) 1.5rem 3rem;background-position:50% 20%}.auth-story h1{font-size:max(2.8rem,min(12vw,5rem))}.photo-caption p{display:none}}@media (max-width:42rem){.app-shell{gap:3rem}.principles{grid-template-columns:1fr;gap:1rem}}
