.portal-app{background:var(--surface);color:var(--ink);font-size:16px}.portal-app.framed{flex-direction:column;flex:1;min-height:0;display:flex}.portal-app.framed .portal-body{overscroll-behavior:contain;scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}.portal-app.framed .portal-body::-webkit-scrollbar{display:none}.portal-tabs{height:calc(64px + var(--portal-safe-bottom,env(safe-area-inset-bottom)));padding-bottom:var(--portal-safe-bottom,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface);flex-shrink:0;grid-template-columns:repeat(4,1fr);display:grid}.portal-app.framed .portal-tabs{--portal-safe-bottom:20px}.portal-app:not(.framed) .portal-tabs{z-index:20;position:fixed;bottom:0;left:0;right:0}.portal-tabs button{color:var(--muted);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:13px;display:flex}.portal-tabs button[aria-current=page]{color:var(--accent-ink);font-weight:700}.portal-tabs svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.portal-top{z-index:5;border-bottom:1px solid var(--line);background:var(--surface);flex-direction:column;gap:10px;padding:12px 16px;display:flex;position:sticky;top:0}.portal-top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-top-row>b{font-size:17px}.portal-grade{color:var(--ink-3);margin-left:6px;font-size:14px;font-weight:500}.portal-year-note{color:var(--muted);word-break:keep-all;margin-top:-4px;font-size:13px;line-height:1.4}.portal-mock-mark{background:var(--fill);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:13px}.portal-screen{flex-direction:column;gap:12px;padding:16px;display:flex}.portal-screen h2{margin:8px 0 0;font-size:18px;line-height:1.4}.portal-head-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-head-row h2{margin:0}.portal-card{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);padding:16px}.portal-pad{padding:16px}.portal-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.portal-sub{color:var(--muted);word-break:keep-all;margin:0;font-size:13px;line-height:1.5}.portal-lead{color:var(--ink-2);word-break:keep-all;margin:0;font-size:16px}.portal-full{justify-content:center;width:100%}.portal-grow>button,.portal-grow{flex:1}.portal-big{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:56px;font-weight:700;line-height:1.1}.portal-warn-line{background:var(--warning-soft);color:var(--warning);word-break:keep-all;border-radius:10px;margin:0;padding:8px 12px;font-size:13px}.portal-verdict{align-items:center;gap:4px;display:inline-flex}.portal-verdict.labeled{flex-wrap:wrap;justify-content:flex-end}.portal-verdict.labeled>small{color:var(--muted);text-align:right;white-space:nowrap;flex-basis:100%;font-size:13px}.portal-cycle-split{width:100%}.portal-cycle-split button{flex:1;height:48px;font-size:17px}.portal-chips{scrollbar-width:none;gap:8px;margin:0 -16px;padding:0 16px;display:flex;overflow-x:auto}.portal-chips::-webkit-scrollbar{display:none}.portal-chips>.chip{flex-shrink:0}.portal-chips.wrap{flex-wrap:wrap;margin:0;padding:0;overflow-x:visible}.portal-chips-label{color:var(--ink-3);flex-shrink:0;align-self:center;font-size:13px;font-weight:700}.portal-dday{text-align:center;border-color:var(--accent-soft);background:var(--accent-soft);flex-direction:column;align-items:center;gap:4px;display:flex}.portal-dday small{color:var(--accent-ink);font-size:15px;font-weight:700}.portal-dday .portal-big{color:var(--accent-ink)}.portal-dday span{color:var(--ink-3);font-size:15px}.portal-todo{justify-content:space-between;align-items:center;gap:12px;display:flex}.portal-todo.rejected{border-color:var(--accent)}.portal-todo>div,.portal-schedule li>div,.portal-notice{flex-direction:column;gap:2px;min-width:0;display:flex}.portal-todo small,.portal-schedule small,.portal-notice small{color:var(--muted);font-size:13px}.portal-schedule{margin:0;padding:4px 16px;list-style:none}.portal-schedule li{border-top:1px solid var(--fill);align-items:center;gap:12px;padding:10px 0;display:flex}.portal-schedule li:first-child{border-top:0}.portal-schedule b{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.portal-dday-tag{background:var(--fill);min-width:56px;height:28px;color:var(--ink-2);font-variant-numeric:tabular-nums;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0 8px;font-size:14px;font-weight:700;display:flex}.portal-notice p{color:var(--ink-3);word-break:keep-all;margin:4px 0;font-size:15px}.portal-grades{grid-template-columns:repeat(4,1fr);gap:8px;margin:0;padding:0;list-style:none;display:grid}.portal-grades li{text-align:center;flex-direction:column;align-items:center;gap:2px;padding:12px 4px;display:flex}.portal-grades small{color:var(--ink-3);font-size:14px;font-weight:700}.portal-grades .portal-big-num{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:42px;font-weight:700;line-height:1.1}.portal-grades span{color:var(--muted);word-break:keep-all;font-size:13px;line-height:1.3}.portal-trends{flex-direction:column;gap:6px;display:flex}.portal-trend,.portal-trend-axis{grid-template-columns:36px 1fr 64px;align-items:center;gap:8px;display:grid}.portal-trend>b{font-size:14px}.portal-trend svg{width:100%;height:auto;display:block;overflow:visible}.portal-trend-grid{stroke:var(--line);stroke-width:1px}.portal-trend-line{fill:none;stroke:var(--ink-3);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.portal-trend-dot{fill:var(--surface);stroke:var(--ink-3);stroke-width:2px}.portal-trend-last{fill:var(--accent);stroke:var(--surface);stroke-width:2px}.portal-trend-now{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:22px;font-weight:700}.portal-trend-now small{color:var(--muted);font-size:13px;font-weight:500}.portal-trend-now em{margin-left:4px;font-size:13px;font-style:normal}.portal-trend-axis>div{height:36px;position:relative}.portal-trend-axis small{color:var(--muted);white-space:nowrap;flex-direction:column;align-items:center;font-size:13px;line-height:1.3;display:flex;position:absolute;top:0;transform:translate(-50%)}.portal-record ul{grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px;margin:8px 0;padding:0;list-style:none;display:grid}.portal-record li{background:var(--fill-soft);border-radius:12px;flex-direction:column;align-items:center;padding:8px 4px;display:flex}.portal-record li small,.portal-record>small{color:var(--muted);font-size:13px}.portal-record li b{font-variant-numeric:tabular-nums;font-size:20px}.portal-photo{border:1px dashed var(--field-border);background:var(--fill);height:180px;color:var(--muted);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.portal-photo svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linejoin:round}.portal-readout{padding:0;overflow:hidden}.portal-readout tbody th small{color:var(--muted);word-break:keep-all;font-size:13px;font-weight:500;line-height:1.3;display:block}.portal-readout input{border:1px solid var(--field-border);background:var(--surface);width:100%;min-width:0;height:36px;color:var(--ink);text-align:center;font-variant-numeric:tabular-nums;caret-color:#0000;border-radius:8px;padding:0;font-size:16px;font-weight:700}.portal-readout td.low input{border-color:var(--warning);background:var(--warning-soft);color:var(--warning)}.portal-readout td.focus input{border-color:var(--focus);outline:2px solid var(--focus);outline-offset:0}.portal-edited{color:var(--up);font-size:13px;font-weight:700;display:block}.portal-keypad{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.portal-keypad button{background:var(--fill);height:52px;color:var(--ink);border:0;border-radius:12px;font-size:22px;font-weight:700}.portal-keypad button:nth-child(10),.portal-keypad button:nth-child(12){color:var(--ink-3);font-size:16px}.portal-keypad button:active{background:var(--line)}.portal-search{width:100%}.portal-search svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;flex-shrink:0}.portal-result{align-items:center;gap:10px;padding:12px;display:flex}.portal-result-main{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;min-width:0;padding:0;display:flex}.portal-result-name{flex-direction:column;gap:2px;min-width:0;display:flex}.portal-result-name>b{word-break:keep-all;font-size:16px}.portal-result-name>span{color:var(--ink-3);word-break:keep-all;font-size:14px}.portal-result-name small{color:var(--muted);font-size:13px}.portal-mine-avg{flex-wrap:wrap;gap:2px 10px;display:flex}.portal-avg-line{background:var(--surface);color:var(--ink-3);border-radius:12px;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;margin:0;padding:10px 12px;font-size:14px;display:flex}.portal-avg-line b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:16px}.portal-avg-line small{color:var(--muted);font-size:13px}.portal-result-name small b{color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px}.portal-result-track{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.portal-result-track small{color:var(--ink-3);font-size:13px}.portal-starred{flex-direction:column;gap:10px;display:flex}.portal-starred h2{margin:0;font-size:17px}.portal-star-hint{background:var(--star-soft);color:var(--ink-2);word-break:keep-all;border-radius:12px;margin:0;padding:10px 12px;font-size:14px;line-height:1.45}.portal-star-hint>span{color:var(--star);margin-right:2px}.portal-starred h2 small{color:var(--muted);font-size:13px;font-weight:500}.portal-starred ul{margin:0;padding:0;list-style:none}.portal-starred li button{border:0;border-top:1px solid var(--fill);text-align:left;background:0 0;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:56px;padding:6px 0;display:flex}.portal-starred li:first-child button{border-top:0}.portal-starred>.btn{justify-content:center;align-self:stretch}.portal-result-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.portal-result-side>small{max-width:120px;color:var(--muted);text-align:right;word-break:keep-all;font-size:13px;line-height:1.3}.portal-star{width:44px;height:44px;color:var(--faint);background:0 0;border:0;border-radius:12px;justify-content:center;align-items:center;font-size:24px;display:flex}.portal-star.on{color:var(--star)}.portal-unit-head{align-items:center;gap:12px;display:flex}.portal-unit-head h2{margin:0;font-size:20px}.portal-unit-head span{color:var(--ink-3);font-size:15px}.portal-total{border-color:var(--accent-soft);background:var(--accent-soft);flex-direction:column;gap:8px;display:flex}.portal-total-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-total-top>small{color:var(--accent-ink);font-size:15px;font-weight:700}.portal-total .portal-big{color:var(--accent-ink)}.portal-sum{grid-template-columns:1fr 1fr;gap:8px;margin:0;display:grid}.portal-sum div{background:var(--surface);border-radius:12px;padding:10px 12px}.portal-sum dt{color:var(--muted);font-size:13px}.portal-sum dd{font-variant-numeric:tabular-nums;margin:0;font-size:20px;font-weight:700}.portal-sum small,.portal-event-score small{color:var(--muted);font-size:13px;font-weight:500}.portal-event{flex-direction:column;gap:10px;display:flex}.portal-event-top{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.portal-event-top>b{font-size:16px}.portal-event-top>small{color:var(--muted);font-size:13px}.portal-event-score{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:22px;font-weight:700}.portal-record-input{align-items:center;gap:8px;display:flex}.portal-record-input input{border:1px solid var(--field-border);background:var(--surface);font-variant-numeric:tabular-nums;border-radius:12px;flex:1;min-width:0;height:48px;padding:0 14px;font-size:20px;font-weight:700}.portal-record-input input:disabled{background:var(--fill)}.portal-record-input>span{min-width:28px;color:var(--ink-3);font-size:16px;font-weight:700}.portal-prefill{color:var(--muted);font-size:13px}.portal-prefill.mine{color:var(--up);font-weight:700}.portal-history{flex-direction:column;gap:8px;display:flex}.portal-history-body{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.portal-best{white-space:nowrap;flex-shrink:0;align-items:baseline;gap:4px;display:flex}.portal-best small{color:var(--muted);font-size:13px}.portal-best b{font-variant-numeric:tabular-nums;font-size:30px}.portal-history ol{flex:1;justify-content:center;gap:8px;margin:0;padding:0;list-style:none;display:flex}.portal-history ol li{flex-direction:column;align-items:center;display:flex}.portal-history ol small{color:var(--muted);font-size:13px}.portal-history ol span{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:15px}.portal-history em{white-space:nowrap;font-size:14px;font-style:normal;font-weight:700}.portal-own{margin:0;padding:4px 16px;list-style:none}.portal-own li{border-top:1px solid var(--fill);flex-direction:column;gap:2px;padding:10px 0;display:flex}.portal-own li:first-child{border-top:0}.portal-own small{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.portal-join{min-height:100%}.portal-join h2{font-size:24px}.portal-join-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-dots{gap:6px;display:flex}.portal-dots span{background:var(--line);border-radius:999px;width:8px;height:8px}.portal-dots .done{background:color-mix(in srgb, var(--accent) 40%, transparent)}.portal-dots .on{background:var(--accent);width:24px}.portal-invite{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.portal-invite small{color:var(--muted);font-size:15px}.portal-invite b{font-size:26px}.portal-invite p{color:var(--muted);margin:0;font-size:14px}.portal-code{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.portal-code input{border:1px solid var(--field-border);text-align:center;border-radius:12px;min-width:0;height:56px;padding:0;font-size:24px;font-weight:700}.portal-row{justify-content:space-between;align-items:center;gap:8px;font-size:15px;display:flex}.portal-timer{color:var(--accent-ink);font-variant-numeric:tabular-nums}.portal-consents{flex-direction:column;display:flex}.portal-check{border-top:1px solid var(--line);cursor:pointer;align-items:flex-start;gap:12px;padding:12px 0;display:flex}.portal-check input{width:22px;height:22px;accent-color:var(--accent);flex-shrink:0;margin:2px 0 0}.portal-check>span{flex-wrap:wrap;align-items:center;gap:4px;font-size:15px;display:flex}.portal-check small{color:var(--muted);flex-basis:100%;font-size:13px}.portal-check.all{background:var(--fill-soft);border:0;border-radius:14px;padding:14px;font-size:17px}.portal-kakao{background:var(--kakao);width:100%;height:52px;color:var(--ink);border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;font-size:16px;font-weight:700;display:flex}.portal-kakao svg{fill:currentColor}.portal-profile{margin:0;padding:4px 16px}.portal-profile div{border-top:1px solid var(--fill);justify-content:space-between;gap:12px;padding:12px 0;display:flex}.portal-profile div:first-child{border-top:0}.portal-profile dt{color:var(--muted);font-size:15px}.portal-profile dd{text-align:right;margin:0;font-size:16px;font-weight:700}.portal-steps{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.portal-steps li{background:var(--fill-soft);word-break:keep-all;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;font-size:15px;display:flex}.portal-steps li span,.portal-flow li span{background:var(--accent);width:28px;height:28px;color:var(--on-accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.portal-pair,.portal-join-nav{grid-template-columns:1fr 1fr;gap:8px;display:grid}.portal-pair>.btn,.portal-join-nav>.btn{justify-content:center;width:100%}.portal-join-nav{margin-top:auto;padding-top:8px}.portal-flow{grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;list-style:none;display:grid}.portal-flow li{flex-direction:column;gap:4px;padding:14px;display:flex}.portal-flow b{font-size:16px}.portal-flow small{color:var(--muted);word-break:keep-all;font-size:13px}.mock-board{background:var(--fill-soft);min-height:100vh;padding:32px 24px 48px}.mock-board-head h1{margin:0;font-size:34px;line-height:1.3}.mock-board-head h1 span{color:var(--accent)}.mock-board-head p{color:var(--muted);margin:6px 0 0;font-size:15px}.mock-board-controls{flex-wrap:wrap;align-items:center;gap:12px;margin:20px 0 28px;display:flex}.mock-board-chips{flex-wrap:wrap;gap:8px;margin-right:8px;display:flex}.mock-devices{flex-wrap:wrap;gap:32px;display:flex}.mock-device{flex-direction:column;align-items:center;gap:12px;margin:0;display:flex}.mock-device figcaption{color:var(--ink-3);font-size:14px;font-weight:700}.mock-device-frame{--device-radius:54px;--screen-radius:42px;border-radius:var(--device-radius);background:var(--ink);width:414px;height:868px;box-shadow:var(--shadow-dialog);padding:12px}.mock-device-screen{border-radius:var(--screen-radius);background:var(--surface);flex-direction:column;height:100%;display:flex;position:relative;overflow:hidden}.mock-device-screen:before{content:"";background:var(--ink);z-index:30;border-radius:999px;width:120px;height:34px;position:absolute;top:11px;left:50%;transform:translate(-50%)}.mock-device-status{height:52px;color:var(--ink);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 32px;font-size:15px;display:flex}.mock-device-status span{letter-spacing:.05em;font-size:13px}.mock-device-home{background:var(--ink);z-index:30;border-radius:999px;width:134px;height:5px;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.mock-phone-bar{border-bottom:1px solid var(--line);background:var(--fill-soft);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;display:flex}.mock-phone-bar h1{flex:1;margin:0;font-size:15px}.mock-tools{flex-basis:100%}.mock-tools>summary{min-height:44px;color:var(--ink-3);cursor:pointer;align-items:center;font-size:14px;display:flex}.mock-tools.pc{border:1px dashed var(--line);border-radius:12px;flex-basis:100%;padding:12px 16px}.mock-tools.pc h2{margin:0 0 8px;font-size:15px}.mock-tools.pc h2 small{color:var(--muted);font-size:13px;font-weight:500}.mock-tools-body{flex-direction:column;gap:8px;display:flex}.mock-tools-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.mock-tools-row>small{width:64px;color:var(--muted);font-size:13px}.mock-tools-note{color:var(--ink-3);word-break:keep-all;margin:0;font-size:13px;line-height:1.45}.my-portal{max-width:480px;min-height:100dvh;margin:0 auto}.portal-field{color:var(--ink-3);flex-direction:column;gap:6px;font-size:14px;font-weight:700;display:flex}.portal-field input,.portal-field select{border:1px solid var(--field-border);background:var(--surface);width:100%;min-width:0;min-height:48px;color:var(--ink);font:inherit;border-radius:12px;padding:10px 12px;font-size:16px;font-weight:400}.portal-field .seg{align-self:flex-start}.portal-withdraw{flex-direction:column;gap:8px;display:flex}.portal-withdraw p{word-break:keep-all;margin:0;font-size:15px}.portal-withdraw small{color:var(--muted);word-break:keep-all;font-size:13px}.my-original{height:auto;min-height:120px;padding:12px}.my-original img{object-fit:contain;border-radius:8px;max-width:100%;max-height:320px;display:block}.portal-readout td.my-auto{color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}.my-subject{cursor:pointer;display:block;position:relative}.portal-readout th .my-subject small{color:var(--up)}.my-subject select{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.my-record caption{text-align:left;color:var(--ink-2);padding:10px 12px 0;font-weight:700}.my-notes{color:var(--warning);word-break:keep-all;flex-direction:column;gap:4px;margin:0;padding:12px 16px 12px 32px;font-size:13px;display:flex}.my-exams{flex-wrap:wrap}.portal-app.my-portal:not(.framed) .portal-tabs{width:min(100%,480px);left:50%;right:auto;transform:translate(-50%)}@media screen and (min-width:601px){.my-portal.with-tabs{padding-bottom:calc(64px + env(safe-area-inset-bottom))}}
