@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";@font-face{font-family:NexonLv1Gothic;src:url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_20-04@2.1/NEXON Lv1 Gothic OTF Light.woff")format("woff");font-weight:300;font-display:swap}@font-face{font-family:NexonLv1Gothic;src:url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_20-04@2.1/NEXON Lv1 Gothic OTF.woff")format("woff");font-weight:400;font-display:swap}@font-face{font-family:NexonLv1Gothic;src:url("https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_20-04@2.1/NEXON Lv1 Gothic OTF Bold.woff")format("woff");font-weight:700;font-display:swap}:root{--color-bg:#070f1f;--color-bg-elevated:#0f1c33;--color-bg-elevated-2:#16263f;--color-paper:#fff;--color-paper-dim:#e9edf2;--color-accent:#00a5e3;--color-accent-strong:#33b8ea;--color-accent-dim:#0c3b5c;--color-match:#e94b8a;--color-match-strong:#f272a3;--color-line:#1d2a40;--color-line-soft:#141f33;--color-text:#f5f7fa;--color-text-muted:#93a0b4;--color-text-faint:#5e6b80;--color-ink:#002a64;--color-ink-muted:#365176;--color-danger:#c23b6b;--font-display:"NexonLv1Gothic", "Inter", -apple-system, sans-serif;--font-body:"NexonLv1Gothic", "Inter", -apple-system, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--radius-card:16px;--radius-pill:999px;--shadow-soft:0 4px 16px #0006;--ease-develop:cubic-bezier(.16, 1, .3, 1);--dur-fast:.18s;--dur-med:.42s;--dur-slow:.9s}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-med:0s;--dur-slow:0s}}*{box-sizing:border-box}html{scrollbar-gutter:stable}html,body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;padding:0}button{font-family:inherit}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-accent-strong);outline-offset:2px}#root{background:radial-gradient(ellipse 60% 40% at 50% 0%, #00a5e314, transparent), var(--color-bg);justify-content:center;min-height:100vh;display:flex}.app-frame{background:var(--color-bg);border-left:1px solid var(--color-line-soft);border-right:1px solid var(--color-line-soft);flex-direction:column;width:100%;max-width:430px;height:100vh;display:flex;position:relative}.app-header{padding:var(--sp-6) var(--sp-5) var(--sp-4)}.app-header__row{align-items:center;gap:var(--sp-2);display:flex}.app-header__logo-icon{flex-shrink:0;width:22px;height:22px}.app-header__logo{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);font-size:24px;font-weight:800}.app-header__tag{font-family:var(--font-mono);letter-spacing:.12em;color:var(--color-text-faint);font-size:11px}.app-header__subtitle{margin:var(--sp-1) 0 0;color:var(--color-text-muted);font-size:14px}.app-content{flex-direction:column;flex:1;padding-bottom:88px;display:flex;overflow-y:auto}.app-content--flush-bottom{scrollbar-width:none;-ms-overflow-style:none;padding-bottom:0}.app-content::-webkit-scrollbar{display:none}.screen{padding:0 var(--sp-5) var(--sp-6);flex-direction:column;flex:1;display:flex}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent);margin:0 0 var(--sp-2);font-size:11px}.screen-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);margin:0 0 var(--sp-2);font-size:22px;font-weight:700;line-height:1.3}.screen-sub{color:var(--color-text-muted);margin:0 0 var(--sp-6);font-size:14px;line-height:1.6}.bottom-nav{border-top:1px solid var(--color-line-soft);background:var(--color-bg);display:flex;position:sticky;bottom:0}.bottom-nav__item{padding:var(--sp-3) 0 var(--sp-4);color:var(--color-text-faint);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:4px;font-size:11px;display:flex}.bottom-nav__item.is-active{color:var(--color-text)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn-primary,.btn-secondary{width:100%;padding:16px var(--sp-5);border-radius:var(--radius-pill);font-family:var(--font-body);cursor:pointer;transition:transform var(--dur-fast) ease, opacity var(--dur-fast) ease;border:none;font-size:15px;font-weight:600}.btn-primary{background:var(--color-accent);color:var(--color-ink)}.btn-primary:disabled{background:var(--color-bg-elevated-2);color:var(--color-text-faint);cursor:not-allowed}.btn-primary:not(:disabled):active{transform:scale(.98)}.btn-secondary{color:var(--color-text-muted);border:1px solid var(--color-line);background:0 0}.btn-secondary:active{transform:scale(.98)}.form-error{color:var(--color-danger);margin:var(--sp-3) 0 0;font-size:13px}.upload-progress{text-align:center;color:var(--color-text-muted);margin:var(--sp-5) 0 var(--sp-4);font-size:14px}.upload-progress strong{color:var(--color-text-faint);font-weight:700}.upload-progress strong.is-ready{color:var(--color-match)}.section-divider{border:none;border-top:1px solid var(--color-line-soft);margin:0 0 var(--sp-4)}.privacy-toggle{align-items:center;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--color-line);background:var(--color-bg-elevated);margin-bottom:var(--sp-4);border-radius:14px;display:flex}.privacy-toggle__icon{background:var(--color-bg-elevated-2);width:32px;height:32px;color:var(--color-text-muted);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.privacy-toggle__text{flex-direction:column;flex:1;gap:2px;display:flex}.privacy-toggle__label{color:var(--color-text);font-size:14px;font-weight:600}.privacy-toggle__desc{color:var(--color-text-muted);font-size:12px}.privacy-toggle__switch{border-radius:var(--radius-pill);background:var(--color-line);cursor:pointer;width:46px;height:26px;transition:background var(--dur-fast) ease;border:none;flex-shrink:0;position:relative}.privacy-toggle__switch.is-on{background:var(--color-accent-dim)}.privacy-toggle__knob{background:var(--color-paper);width:20px;height:20px;transition:transform var(--dur-fast) var(--ease-develop);border-radius:50%;position:absolute;top:3px;left:3px}.privacy-toggle__switch.is-on .privacy-toggle__knob{background:var(--color-accent-strong);transform:translate(20px)}.photo-grid{gap:var(--sp-3);margin-bottom:var(--sp-2);grid-template-columns:1fr 1fr;grid-auto-rows:108px;display:grid}.photo-slot{border-radius:var(--radius-card);position:relative;overflow:hidden}.photo-slot--main{grid-row:span 2}.photo-slot--empty{justify-content:center;align-items:center;gap:var(--sp-2);background:var(--color-bg-elevated);border:1px solid var(--color-line);color:var(--color-text-faint);cursor:pointer;flex-direction:column;padding:0;display:flex}.photo-slot--empty:hover{border-color:var(--color-accent-dim)}.photo-slot__plus{border:1px solid var(--color-line);width:36px;height:36px;color:var(--color-text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.photo-slot__caption{color:var(--color-text-muted);font-size:13px}.photo-slot__caption--muted{color:var(--color-text-faint);font-size:12px}.photo-slot--filled{background:var(--color-bg-elevated)}.photo-slot__img{object-fit:cover;filter:none;width:100%;height:100%;transition:filter var(--dur-fast) ease;display:block}.photo-slot__img.is-blurred{filter:blur(6px)saturate(.9)}.preview-notice{align-items:flex-start;gap:var(--sp-2);margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-card);background:var(--color-bg-elevated);color:var(--color-text-muted);font-size:12px;line-height:1.5;display:flex}.preview-notice svg{color:var(--color-accent);flex-shrink:0;margin-top:2px}.photo-slot__index{font-family:var(--font-mono);letter-spacing:.04em;color:var(--color-text);background:#070f1fb8;border-radius:6px;padding:3px 7px;font-size:10px;position:absolute;bottom:8px;left:8px}.photo-slot__remove{width:22px;height:22px;color:var(--color-text);cursor:pointer;background:#070f1fb8;border:none;border-radius:50%;font-size:14px;line-height:1;position:absolute;top:8px;right:8px}.trait-group-list{gap:var(--sp-4);flex-direction:column;display:flex}.trait-group{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-bg-elevated);padding:var(--sp-4);opacity:0;animation:trait-group-in var(--dur-med) var(--ease-develop) forwards}.trait-group:nth-child(2){animation-delay:.16s}@keyframes trait-group-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.trait-group__header{margin-bottom:var(--sp-3);justify-content:space-between;align-items:baseline;display:flex}.trait-group__title{color:var(--color-text);font-size:15px;font-weight:700}.trait-group__score{font-family:var(--font-mono);color:var(--color-match);font-size:16px;font-weight:600}.trait-group__grid{gap:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.trait-group__tile{aspect-ratio:1;background:var(--color-bg-elevated-2);border-radius:10px;position:relative;overflow:hidden}.trait-group__tile-img{object-fit:cover;width:100%;height:100%;display:block}.trait-group__tile-label{color:var(--color-text);background:#070f1f99;border-radius:5px;padding:2px 6px;font-size:11px;position:absolute;bottom:6px;left:6px}.btn-primary,.btn-secondary{justify-content:center;align-items:center;gap:8px;display:flex}.match-state{text-align:center;padding:var(--sp-7) 0 var(--sp-4)}.match-state__icon{width:56px;height:56px;margin:0 auto var(--sp-4);background:var(--color-bg-elevated);color:var(--color-text-muted);border-radius:50%;justify-content:center;align-items:center;display:flex}.match-state .btn-primary{width:auto;margin:var(--sp-4) auto 0;padding:12px var(--sp-5)}.match-decision-row{gap:var(--sp-3);margin-top:var(--sp-4);display:flex}.match-decision-row .btn-primary,.match-decision-row .btn-secondary{width:auto;min-width:0;padding:16px var(--sp-5);white-space:nowrap;flex:1;min-height:52px;margin:0}.match-score-card{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-bg-elevated);padding:var(--sp-4);margin-bottom:var(--sp-4)}.match-score-card__header{margin-bottom:var(--sp-3);justify-content:space-between;align-items:baseline;display:flex}.match-score-card__label{color:var(--color-text);font-size:14px;font-weight:700}.match-score-card__value{font-family:var(--font-mono);color:var(--color-accent);font-size:28px;font-weight:700}.match-breakdown{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.match-breakdown__row{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.match-breakdown__icon{width:18px;height:18px;color:var(--color-text-faint);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.match-breakdown__icon[data-matched=true]{color:var(--color-match-strong);background:#e94b8a24}.match-breakdown__label{width:44px;color:var(--color-text);flex-shrink:0;font-size:13px;font-weight:700}.match-breakdown__bar{background:var(--color-bg-elevated-2);border-radius:3px;flex:1;height:6px;overflow:hidden}.match-breakdown__bar-fill{background:var(--color-accent);height:100%;transition:width var(--dur-med) var(--ease-develop);border-radius:3px;display:block}.match-breakdown__points{text-align:right;width:56px;font-family:var(--font-mono);color:var(--color-accent);flex-shrink:0;font-size:12px;font-weight:700}.match-breakdown__keywords{color:var(--color-text-faint);padding-left:calc(44px + var(--sp-2));flex-basis:100%;margin-top:-4px;font-size:11px}.match-breakdown__keywords--empty{color:var(--color-text-faint);font-style:italic}.icebreaker{margin-bottom:var(--sp-4)}.icebreaker__toggle{width:auto;padding:10px var(--sp-4)}.icebreaker__list{margin:var(--sp-3) 0 0;gap:var(--sp-2);flex-direction:column;padding:0;list-style:none;display:flex}.icebreaker__item{color:var(--color-text);background:var(--color-bg-elevated);border:1px solid var(--color-line-soft);padding:var(--sp-3);border-radius:10px;font-size:13px}.match-reveal-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-bg-elevated);margin-bottom:var(--sp-4);display:flex}.match-partner-thumb{background:linear-gradient(160deg, var(--color-bg-elevated-2), var(--color-line));filter:blur();width:44px;height:44px;transition:filter var(--dur-fast) ease;border-radius:50%;flex-shrink:0}.match-partner-thumb.is-blurred{filter:blur(6px)saturate(.9)}.match-reveal-row__text{flex-direction:column;flex:1;gap:6px;display:flex}.match-reveal-row__label{color:var(--color-text-muted);font-size:13px}.match-reveal-row__text .btn-secondary{width:auto;padding:8px var(--sp-3);font-size:13px}.match-screen__footer{padding-top:var(--sp-2);margin-top:auto}.match-found{gap:var(--sp-3);flex-direction:column;display:flex}.match-partner-photos{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-direction:column;display:flex}.match-partner-photo{object-fit:cover;border-radius:var(--radius-card);background:var(--color-bg-elevated);width:100%;height:150px;display:block}.match-tags{gap:var(--sp-2);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.match-tag{color:var(--color-text);background:var(--color-bg-elevated-2);border-radius:20px;padding:6px 12px;font-size:12px;font-weight:600}.match-ai-comment{border:1px solid var(--color-line);border-radius:var(--radius-card);background:var(--color-bg-elevated);padding:var(--sp-4);margin-bottom:var(--sp-4)}.match-ai-comment__label{letter-spacing:.04em;color:var(--color-text-faint);margin-bottom:var(--sp-2);font-size:11px;display:block}.match-ai-comment__body{color:var(--color-text);margin:0;font-size:14px;line-height:1.6}.match-ai-comment__placeholder{color:var(--color-text-faint);font-style:italic}.match-hint{margin:var(--sp-2) 0 0;text-align:center;color:var(--color-text-faint);font-size:12px}.chat-screen{flex-direction:column;flex:1;min-height:0;display:flex}.chat-screen--full{padding:0 var(--sp-5)}.chat-header{padding:0 0 var(--sp-4);border-bottom:1px solid var(--color-line-soft);margin-bottom:var(--sp-2)}.chat-header__title{color:var(--color-text);font-size:15px;font-weight:700}.chat-message-list{gap:var(--sp-2);scrollbar-width:none;flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-message-list::-webkit-scrollbar{display:none}.chat-bubble-row{justify-content:flex-start;align-items:flex-end;gap:6px;display:flex}.chat-bubble-row.is-mine{justify-content:flex-end}.chat-bubble-row.is-mine .chat-bubble-time{order:-1}.chat-bubble-time{color:var(--color-text-faint);white-space:nowrap;flex-shrink:0;font-size:11px}.chat-bubble{background:var(--color-bg-elevated);max-width:75%;color:var(--color-text);word-break:break-word;border-radius:16px;padding:10px 14px;font-size:14px;line-height:1.5}.chat-bubble-row.is-mine .chat-bubble{background:var(--color-accent);color:var(--color-ink)}.icebreaker-popup{margin-bottom:var(--sp-2);padding:var(--sp-3) 36px var(--sp-3) var(--sp-4);background:var(--color-bg-elevated);border:1px solid var(--color-line-soft);box-shadow:var(--shadow-soft);border-radius:14px;flex-shrink:0;position:relative}.icebreaker-popup__close{top:var(--sp-2);right:var(--sp-2);width:24px;height:24px;color:var(--color-text-faint);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.icebreaker-popup__title{color:var(--color-accent);margin:0 0 4px;font-size:12px;font-weight:600}.icebreaker-popup__question{color:var(--color-text);margin:0;font-size:14px;line-height:1.5}.chat-input-row{align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0;display:flex}.chat-input{padding:10px var(--sp-4);border-radius:var(--radius-pill);border:1px solid var(--color-line-soft);background:var(--color-bg-elevated);color:var(--color-text);flex:1;font-size:14px}.chat-input:focus-visible{outline:2px solid var(--color-accent-strong);outline-offset:2px}.chat-send-btn{background:var(--color-accent);width:40px;height:40px;color:var(--color-ink);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-send-btn:disabled{background:var(--color-bg-elevated-2);color:var(--color-text-faint);cursor:not-allowed}.feature-tags{gap:var(--sp-2);flex-wrap:wrap;display:flex}.feature-tag{color:var(--color-text);background:var(--color-bg-elevated-2);border:1px solid var(--color-line-soft);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:6px 14px;font-size:13px;display:flex}.feature-tag__swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.feature-tag__icon{color:var(--color-text-muted);flex-shrink:0}.upload-screen__footer,.analysis-screen__footer{margin-top:var(--sp-6)}.profile-screen__card{margin-top:var(--sp-2);align-items:baseline;gap:var(--sp-2);display:flex}.profile-screen__nickname{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);margin:0;font-size:28px;font-weight:700}.profile-screen__campus{color:var(--color-text-muted);margin:0;font-size:13px;font-weight:300}.profile-setup{padding:var(--sp-5);flex:1;justify-content:center;align-items:center;display:flex}.profile-setup__card{align-items:center;gap:var(--sp-4);text-align:center;flex-direction:column;width:100%;display:flex}.profile-setup__logo-row{align-items:center;gap:var(--sp-2);display:flex}.profile-setup__logo-icon{flex-shrink:0;width:40px;height:40px}.profile-setup__logo{font-family:var(--font-display);letter-spacing:-.01em;color:var(--color-text);font-size:44px;font-weight:800}.profile-setup__subtitle{margin:calc(-1 * var(--sp-3)) 0 var(--sp-2);color:var(--color-text-muted);font-size:14px}.profile-setup__row{gap:var(--sp-2);width:100%;display:flex}.profile-setup__input{flex:1;min-width:0}.profile-setup__select-wrap{flex-shrink:0;width:132px;position:relative}.profile-setup__input,.profile-setup__select{padding:14px var(--sp-4);border-radius:var(--radius-pill);border:1px solid var(--color-line);background:var(--color-bg-elevated);color:var(--color-text);font-family:var(--font-body);font-size:15px}.profile-setup__input::placeholder{color:var(--color-text-faint)}.profile-setup__select{appearance:none;cursor:pointer;width:100%;padding-right:34px}.profile-setup__select-icon{right:var(--sp-3);color:var(--color-text-faint);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}
