:root{--app-bg:#f4f7fb;--app-bg-accent:#eaf0ff;--app-surface:#ffffffeb;--app-surface-strong:#fff;--app-line:#dbe4ef;--app-line-strong:#bdd0e0;--app-text:#17202a;--app-muted:#607081;--app-university-accent:#173c65;--app-brand:#173c65;--app-brand-strong:#0f2a47;--app-brand-soft:#e3efff;--app-brand-border:#8fb4db;--app-brand-ring:#173c6529;--app-brand-shadow:#132e5033;--app-brand-glow:#7eabff38;--app-support-glow:#88d9bf38;--app-accent:#e7f6ef;--app-shadow:0 26px 60px #132e501f;--app-radius-xl:28px;--app-radius-lg:22px;--app-radius-md:16px}.material-symbols-outlined{font-feature-settings:"liga";letter-spacing:normal;text-rendering:optimizelegibility;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;direction:ltr;font-family:Material Symbols Outlined;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.app-theme-doshisha{--app-university-accent:#550071;--app-brand:#550071;--app-brand-strong:#360047;--app-brand-soft:#f5e6f8;--app-brand-border:#c99bd8;--app-brand-ring:#55007129;--app-brand-shadow:#55007138;--app-brand-glow:#5500712e;--app-support-glow:#7751941f}.app-theme-kyoto{--app-university-accent:#00205b;--app-brand:#00205b;--app-brand-strong:#00163f;--app-brand-soft:#e5ecf7;--app-brand-border:#8da2c9;--app-brand-ring:#00205b29;--app-brand-shadow:#00205b38;--app-brand-glow:#00205b2e;--app-support-glow:#43699c1f}.app-theme-tokyo{--app-university-accent:#0b8bee;--app-brand:#005fa8;--app-brand-strong:#004d88;--app-brand-soft:#e3f2ff;--app-brand-border:#8ecbf7;--app-brand-ring:#0b8bee2e;--app-brand-shadow:#0b8bee33;--app-brand-glow:#0b8bee2e;--app-support-glow:#43b2e71f}.app-theme-kobe{--app-university-accent:#c40000;--app-brand:#9f0000;--app-brand-strong:#830000;--app-brand-soft:#ffe6e3;--app-brand-border:#f0a09a;--app-brand-ring:#c4000029;--app-brand-shadow:#c4000033;--app-brand-glow:#c4000029;--app-support-glow:#eb56411a}.app-theme-hitotsubashi{--app-university-accent:#aa222a;--app-brand:#aa222a;--app-brand-strong:#7f171e;--app-brand-soft:#fbe8ea;--app-brand-border:#e5a1a6;--app-brand-ring:#aa222a29;--app-brand-shadow:#aa222a38;--app-brand-glow:#aa222a29;--app-support-glow:#c7565c1a}.app-theme-keio{--app-university-accent:#001e62;--app-brand:#001e62;--app-brand-strong:#001f49;--app-brand-soft:#e4eef9;--app-brand-border:#8ea9cf;--app-brand-ring:#001e6229;--app-brand-shadow:#001e6238;--app-brand-glow:#001e622e;--app-support-glow:#8c18201a}.app-theme-osaka_metropolitan{--app-university-accent:#caa82b;--app-brand:#caa82b;--app-brand-strong:#927719;--app-brand-soft:#fbf4d9;--app-brand-border:#e2ca73;--app-brand-ring:#caa82b29;--app-brand-shadow:#caa82b38;--app-brand-glow:#caa82b29;--app-support-glow:#507e9a1a}.app-theme-kawaijuku{--app-university-accent:#0775c0;--app-brand:#0775c0;--app-brand-strong:#045a94;--app-brand-soft:#e3f2fc;--app-brand-border:#8fc8ea;--app-brand-ring:#0775c029;--app-brand-shadow:#0775c038;--app-brand-glow:#0775c02e;--app-support-glow:#3093cc1f}*{box-sizing:border-box}.skip-link{z-index:1000;background:var(--app-brand);color:#fdfbff;box-shadow:0 12px 28px var(--app-brand-shadow);border-radius:999px;padding:10px 14px;font-size:.86rem;font-weight:800;text-decoration:none;transition:transform .18s;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus-visible{outline:3px solid var(--app-brand-ring);outline-offset:3px;transform:translateY(0)}#main-content:focus{outline:0}html{background-color:var(--app-bg)}body.app-body{min-height:100vh;color:var(--app-text);background-color:var(--app-bg);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}:is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]):not([type=range]):not([type=color]),select,textarea){font-size:max(16px,1em)!important}.app-page{min-height:100vh}html:has(body.chat-body){width:100%;max-width:100%;overflow:hidden}body.chat-body{overscroll-behavior:none;background-color:var(--app-bg);width:100%;max-width:100%;overflow:hidden}body.chat-body .app-page,body.chat-body #main-content{width:100%;height:100dvh;min-height:100dvh;overflow:hidden}.app-shell{width:min(100%,1120px);min-height:100vh;margin:0 auto;padding:18px clamp(12px,3vw,28px) 120px}.landing-page{--app-university-accent:#550071;--app-brand:#550071;--app-brand-strong:#360047;--app-brand-soft:#f5e6f8;--app-brand-border:#c99bd8;--app-brand-ring:#55007129;--app-brand-shadow:#55007138;background:#f8fbff;min-height:100vh}.landing-hero{isolation:isolate;background:#172033;align-items:end;min-height:min(760px,92vh);padding:clamp(20px,4vw,40px);display:grid;position:relative;overflow:hidden}.landing-hero-image{object-fit:cover;object-position:center top;z-index:-2;filter:saturate(.94);width:100%;height:100%;position:absolute;inset:0;transform:scale(1.02)}.landing-hero-shade{z-index:-1;background:linear-gradient(90deg,#0f172ac7 0%,#0f172a85 42%,#0f172a1a 100%),linear-gradient(#0f172a00 46%,#0f172a80 100%);position:absolute;inset:0}.landing-nav{z-index:2;justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;top:clamp(16px,3vw,28px);left:clamp(16px,4vw,40px);right:clamp(16px,4vw,40px)}.landing-logo,.landing-nav-link,.landing-primary-link,.landing-secondary-link,.landing-policy-links a{text-decoration:none}.landing-logo{color:#fdfbff;align-items:center;gap:9px;font-size:1rem;font-weight:900;display:inline-flex}.landing-mark{background:var(--app-university-accent);color:#fdfbff;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;font-weight:900;display:inline-flex}.landing-nav-actions{align-items:center;gap:10px;display:flex}.landing-nav-link,.landing-secondary-link{color:#fdfbff;background:#ffffff1f;border:1px solid #ffffff61;border-radius:999px;justify-content:center;align-items:center;min-height:42px;padding:10px 15px;font-weight:900;display:inline-flex}.landing-hero-content{color:#fdfbff;gap:18px;width:min(680px,100%);padding-top:96px;display:grid}.landing-eyebrow{color:var(--app-brand);letter-spacing:.08em;margin:0;font-size:.82rem;font-weight:900}.landing-hero .landing-eyebrow{color:#f7ecff}.landing-hero h1{letter-spacing:-.06em;max-width:11ch;margin:0;font-size:clamp(3rem,9vw,6.8rem);font-weight:900;line-height:.94}.landing-hero-accent{color:#c77dff}.landing-lead{color:#fdfbffe6;width:min(620px,100%);margin:0;font-size:clamp(1rem,2vw,1.18rem);font-weight:700;line-height:1.85}.landing-connection{color:#17663d;background:#e7f7efe6;border-radius:999px;align-items:center;gap:8px;width:fit-content;margin:0;padding:8px 12px;font-size:.84rem;font-weight:900;display:inline-flex}.landing-hero-actions{flex-wrap:wrap;gap:12px;display:flex}.landing-primary-link{min-height:50px;color:var(--app-brand);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:13px 18px;font-weight:900;display:inline-flex;box-shadow:0 20px 42px #00000038}.landing-section{width:min(1120px,100% - 32px);margin:0 auto;padding:clamp(44px,8vw,82px) 0}.landing-section-heading{gap:10px;max-width:720px;margin-bottom:24px;display:grid}.landing-section h2{color:var(--app-text);letter-spacing:-.055em;margin:0;font-size:clamp(2rem,5vw,4.2rem);line-height:1}.landing-feature-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.landing-feature-card{border:1px solid var(--app-line);background:#fff;border-radius:18px;align-content:space-between;gap:18px;min-height:190px;padding:18px;display:grid}.landing-feature-icon{background:var(--app-brand-soft);width:42px;height:42px;color:var(--app-brand);border-radius:14px;justify-content:center;align-items:center;font-weight:900;display:inline-flex}.landing-feature-card h3,.landing-guide-panel h3{color:var(--app-text);margin:0;font-size:1.05rem}.landing-feature-card p,.landing-guide-panel p{color:var(--app-muted);margin:0;font-weight:700;line-height:1.7}.landing-guide{grid-template-columns:minmax(0,.8fr) minmax(0,1fr);align-items:start;gap:clamp(20px,5vw,56px);display:grid}.landing-guide-tabs,.landing-guide-panel{border:1px solid var(--app-line);background:#fff;border-radius:20px}.landing-guide-tabs{gap:6px;padding:8px;display:grid}.landing-guide-tabs button{color:#4c5a69;min-height:46px;font:inherit;text-align:left;border-radius:14px;font-weight:900}.landing-guide-tabs button.is-active{background:var(--app-brand-soft);color:var(--app-brand)}.landing-guide-panel{align-content:center;gap:10px;min-height:190px;padding:clamp(20px,4vw,32px);display:grid}.landing-safety{grid-template-columns:minmax(0,1fr) minmax(280px,.72fr);align-items:start;gap:clamp(20px,5vw,56px);display:grid}.landing-safety-list{gap:10px;display:grid}.landing-safety-list p{border:1px solid var(--app-line);color:var(--app-text);background:#fff;border-radius:16px;align-items:flex-start;gap:10px;margin:0;padding:14px;font-weight:800;line-height:1.6;display:flex}.landing-safety-icon{background:var(--app-brand);width:9px;height:9px;box-shadow:0 0 0 4px var(--app-brand-soft);border-radius:999px;flex:none;margin-top:.48em}.landing-safety-list .landing-safety-icon{color:var(--app-brand)}.landing-final{text-align:center;justify-items:center;gap:18px;display:grid}.landing-final h2{max-width:800px}.landing-final .landing-primary-link{background:var(--app-brand);color:#fff;box-shadow:0 18px 34px var(--app-brand-shadow)}.landing-final .landing-secondary-link{border-color:var(--app-line);color:var(--app-brand);background:#fff}.landing-policy-links{gap:14px;margin:0;font-size:.84rem;font-weight:800;display:flex}.landing-policy-links a{color:var(--app-muted)}.app-topbar{justify-content:space-between;align-items:center;margin-bottom:18px;padding:10px 2px;display:flex}.app-brand-group{align-items:center;gap:12px;display:flex}.app-avatar{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:42px;height:42px;font-size:1rem;font-weight:800;display:inline-flex;overflow:hidden}.app-avatar img{object-fit:cover;width:100%;height:100%}.app-brand-icon .material-symbols-outlined{color:#fff;font-size:1.6rem;font-weight:700}.app-brand{letter-spacing:-.03em;color:var(--app-brand);margin:0;font-size:1.2rem;font-weight:800}.app-icon-button,.app-tab,.app-menu-item,.app-menu-dev-submit,.admin-search-button,.admin-user-menu-button,.admin-menu-action,.account-link-button,.account-add-button,.account-circle-remove,.account-submit,.account-secondary-submit,.account-secondary-button,.friend-copy-button,.friend-icon-action,.friend-primary-action,.location-campus-tab,.location-choice-button,.location-list-button,.location-search-result,.location-quick-entry-button,.location-quick-delete,.location-submit-button,.location-action-button,.location-favorite-toggle,.chat-send-button,.chat-secondary-button,.chat-action-button,.chat-room-icon-button,.chat-direct-button,.chat-modal-form .app-modal-submit,.timetable-cell,.timetable-export-button,.timetable-submit-button,.timetable-delete-button{appearance:none;font:inherit;cursor:pointer;border:0;text-decoration:none}.app-icon-button{width:42px;height:42px;color:var(--app-brand);background:#ffffffb3;border:1px solid #dbe4efcc;border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:relative}.app-menu-wrap{z-index:30;position:relative}.app-menu-panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff5;border:1px solid #dbe4efeb;border-radius:22px;gap:14px;width:min(320px,100vw - 32px);padding:14px;display:grid;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 24px 54px #132e502e}.app-menu-profile{border-bottom:1px solid var(--app-line);align-items:center;gap:12px;padding:4px 2px 12px;display:flex}.app-menu-avatar{flex-shrink:0;width:38px;height:38px}.app-menu-profile-copy{min-width:0}.app-menu-name,.account-name{color:var(--app-text);margin:0;font-size:.98rem;font-weight:800}.app-menu-meta,.account-meta{color:var(--app-muted);margin:3px 0 0;font-size:.84rem}.app-menu-list{gap:8px;display:grid}.app-menu-item{border:1px solid var(--app-line);width:100%;min-height:46px;color:var(--app-text);text-align:left;background:#ffffffc7;border-radius:14px;align-items:center;gap:10px;padding:11px 12px;font-weight:800;text-decoration:none;display:flex}.app-menu-item .material-symbols-outlined{color:var(--app-university-accent);font-size:1.35rem}.app-menu-install-item,.app-menu-notification-item{cursor:pointer}.app-menu-item-copy{gap:2px;min-width:0;display:grid}.app-menu-item-copy small{color:var(--app-muted);font-size:.74rem;font-weight:800;line-height:1.25}.app-menu-logout{color:#9f1d1d}.app-menu-logout .material-symbols-outlined{color:#c53a3a}.app-toast{z-index:70;background:var(--app-surface-strong);width:min(440px,100vw - 28px);color:var(--app-text);border:1px solid var(--app-brand-border);border-radius:20px;padding:14px;position:fixed;top:82px;left:50%;transform:translate(-50%);box-shadow:0 18px 42px #132e502e}.app-realtime-toast-stack{z-index:82;pointer-events:none;gap:10px;width:min(440px,100vw - 28px);display:grid;position:fixed;top:82px;left:50%;transform:translate(-50%)}.app-realtime-toast-stack .app-toast{pointer-events:auto;width:100%;text-decoration:none;transition:opacity .18s ease-out,transform .18s ease-out;display:block;position:relative;top:auto;left:auto;transform:none}.app-realtime-toast-stack .app-toast:hover,.app-realtime-toast-stack .app-toast:focus-visible,.app-realtime-toast-stack .app-toast *{text-decoration:none}.app-realtime-toast-stack .app-toast.is-hiding{opacity:0;transform:translateY(-8px)}.app-realtime-toast .app-toast-heading{grid-template-columns:auto minmax(0,1fr)}.app-realtime-toast .app-toast-copy{gap:2px;display:grid}.app-toast-main{gap:12px;display:grid}.app-toast-heading{grid-template-columns:32px minmax(0,1fr) 36px;align-items:center;gap:10px;display:grid}.app-toast-heading>.material-symbols-outlined{color:var(--app-brand)}.app-toast-copy{min-width:0}.app-toast-label,.app-toast-title,.app-toast-body,.app-toast-status{margin:0}.app-toast-label{color:var(--app-muted);font-size:.72rem;font-weight:800}.app-toast-title{color:var(--app-text);text-overflow:ellipsis;white-space:nowrap;font-size:.94rem;font-weight:900;line-height:1.3;overflow:hidden}.app-toast-body{color:var(--app-muted);font-size:.82rem;font-weight:700;line-height:1.55}.app-toast-arrow{background:var(--app-brand-soft);width:36px;height:36px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:12px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.app-toast-arrow .material-symbols-outlined{font-size:1.18rem}.app-notification-toast-heading{grid-template-columns:32px minmax(0,1fr)}.app-toast-settings,.app-toast-setting-list{gap:10px;display:grid}.app-toast-setting{border:1px solid var(--app-line);background:#ffffffb8;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:44px;padding:9px 10px;display:grid}.app-toast-setting-label{color:var(--app-text);font-size:.82rem;font-weight:800;line-height:1.35}.app-toast-switch{align-items:center;display:inline-flex;position:relative}.app-toast-switch input{opacity:0;pointer-events:none;position:absolute}.app-toast-switch-track{border:1px solid var(--app-line-strong);background:#9eb0c159;border-radius:999px;width:46px;height:26px;transition:background-color .16s,border-color .16s;position:relative}.app-toast-switch-track:after{content:"";background:var(--app-surface);border-radius:999px;width:18px;height:18px;transition:transform .16s;position:absolute;top:3px;left:3px;box-shadow:0 4px 12px #132e5029}.app-toast-switch input:checked+.app-toast-switch-track{background:var(--app-university-accent);border-color:var(--app-university-accent)}.app-toast-switch input:checked+.app-toast-switch-track:after{transform:translate(20px)}.app-toast-switch:has(input:focus-visible) .app-toast-switch-track,.app-toast-select:focus-visible,.app-toast-arrow:focus-visible,.app-toast-primary:focus-visible,.app-toast-secondary:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.app-toast-select{background:var(--app-surface);min-height:36px;color:var(--app-text);border:1px solid var(--app-line);font:inherit;border-radius:12px;padding:0 34px 0 12px;font-size:.82rem;font-weight:800}.app-toast-status{color:#9f1d1d;font-size:.78rem;font-weight:800}.app-toast-actions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.app-toast-primary,.app-toast-secondary{border-radius:13px;min-height:40px;padding:0 14px;font-weight:900}.app-toast-primary{background:var(--app-university-accent);color:#fff;box-shadow:0 12px 24px var(--app-brand-shadow)}.app-toast-secondary{color:var(--app-muted);border:1px solid var(--app-line);background:0 0;justify-self:start}.app-toast-primary:disabled,.app-toast-secondary:disabled{cursor:progress;opacity:.72}.app-menu-dev-form,.account-dev-form{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);border-radius:16px;gap:10px;padding:12px;display:grid}.app-menu-dev-label{color:var(--app-brand);font-size:.78rem;font-weight:800}.app-menu-select{border:1px solid var(--app-brand-border);background:var(--app-surface-strong);width:100%;min-height:44px;color:var(--app-text);font:inherit;border-radius:13px;padding:10px 12px;font-weight:800}.app-menu-select:focus{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.app-menu-dev-submit{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;min-height:42px;box-shadow:0 12px 24px var(--app-brand-shadow);border-radius:13px;padding:10px 12px;font-weight:800}[x-cloak]{display:none!important}.location-main,.friend-main,.chat-main{gap:16px;display:grid}.chat-app-shell .chat-main{grid-template-rows:auto minmax(0,1fr);min-width:0;height:100%;min-height:0;overflow:hidden}.timetable-main,.account-main,.admin-main{gap:16px;display:grid}.app-messages{gap:10px;margin:0;padding:0;display:grid}.app-messages li{background:var(--app-accent);color:#0f5a3b;border:1px solid #caeadb;border-radius:14px;padding:12px 14px;font-size:.92rem;list-style:none}.app-messages-inline{margin-bottom:2px}.location-status-card,.location-history,.location-quick-access-card,.location-recurring-card,.location-select-card,.admin-card,.account-card,.friend-card,.timetable-card{background:var(--app-surface);box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffffe6}.location-status-card{border-radius:var(--app-radius-xl);padding:20px}.location-status-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.location-section-label,.location-subheading{color:var(--app-muted);margin:0;font-size:.82rem;font-weight:700}.location-status-title-wrap{align-items:flex-start;gap:10px;margin-top:8px;display:flex}.location-live-dot,.location-idle-dot{border-radius:999px;flex-shrink:0;width:12px;height:12px;margin-top:8px}.location-live-dot{background:var(--app-university-accent);box-shadow:0 0 0 6px var(--app-brand-ring)}.location-idle-dot{background:#9eb0c1}.location-status-title{letter-spacing:-.04em;white-space:pre-line;margin:0;font-size:1.45rem;font-weight:800;line-height:1.2}.location-status-meta{color:var(--app-muted);margin:10px 0 0 22px;font-size:.92rem}.location-status-flash{color:var(--app-brand);margin:12px 0 0 22px;font-size:.86rem;font-weight:900}.location-status-note{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);color:var(--app-text);overflow-wrap:anywhere;border-radius:16px;margin:12px 0 0 22px;padding:12px 14px;font-size:.9rem;font-weight:700;line-height:1.6}.location-status-actions{flex-direction:column;flex-shrink:0;align-items:stretch;gap:10px;display:flex}.location-action-button{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;white-space:nowrap;box-shadow:0 16px 32px var(--app-brand-shadow);border-radius:16px;padding:12px 16px;font-weight:700}.location-edit-note-button,.location-status-check-in-button{justify-content:center;align-items:center;gap:6px;display:inline-flex}.location-edit-note-button .material-symbols-outlined,.location-status-check-in-button .material-symbols-outlined{font-size:1.12rem}.location-action-link{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.location-history,.location-quick-access-card,.location-recurring-card,.location-select-card,.admin-card,.account-card,.friend-card{border-radius:var(--app-radius-lg);padding:18px}.location-heading-row{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.location-heading,.location-select-title,.account-title,.friend-card-title{letter-spacing:-.03em;margin:0;font-size:1.05rem;font-weight:800}.account-card{gap:16px;display:grid}.admin-card{gap:16px;min-width:0;display:grid}.admin-table-wrap{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:680px;color:var(--app-text);font-size:.9rem}.admin-table th,.admin-table td{border-bottom:1px solid var(--app-line);text-align:left;vertical-align:middle;padding:11px 12px}.admin-table th{color:var(--app-muted);font-size:.78rem;font-weight:900}.analytics-filter-grid{grid-template-columns:.7fr 1fr repeat(3,minmax(0,1fr)) auto}.analytics-user-filter-grid{grid-template-columns:minmax(0,1.4fr) .7fr minmax(0,1fr) minmax(0,1fr) auto}.analytics-user-detail-filter-grid{grid-template-columns:minmax(160px,.3fr) auto;justify-content:start}.analytics-heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:inline-flex}.analytics-link-button{min-height:40px;text-decoration:none}.analytics-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.analytics-chart-grid,.analytics-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.analytics-chart-grid-wide{grid-template-columns:repeat(3,minmax(0,1fr))}.analytics-chart-card{min-width:0}.analytics-chart-frame{width:100%;height:220px;min-height:0;position:relative;overflow:hidden}.analytics-chart-frame-tall{height:240px}.analytics-chart-frame canvas{max-height:100%;display:block;width:100%!important;height:100%!important}.analytics-rank-list,.analytics-action-list{gap:10px;display:grid}.analytics-rank-row,.analytics-action-item{border:1px solid var(--app-line);background:#ffffffbd;border-radius:14px;gap:4px;min-width:0;padding:12px;display:grid}.analytics-rank-row{grid-template-columns:minmax(0,1fr) auto;align-items:center}.analytics-rank-row span,.analytics-action-item strong,.analytics-action-item span{overflow-wrap:anywhere;min-width:0}.analytics-rank-row strong,.analytics-action-type{color:var(--app-brand);font-weight:900}.analytics-source-header{color:var(--app-muted);grid-template-columns:minmax(0,1fr) auto;gap:12px;margin-bottom:10px;font-size:.76rem;font-weight:900;display:grid}.analytics-source-row{align-items:start}.analytics-source-row span,.analytics-source-row strong{gap:4px;display:grid}.analytics-source-row small{color:var(--app-muted);font-size:.74rem;font-weight:800;line-height:1.4}.analytics-campaign-create-grid{grid-template-columns:minmax(220px,1.3fr) minmax(180px,.7fr) auto}.analytics-campaign-filter-grid{grid-template-columns:minmax(160px,240px) auto}.analytics-campaign-list{gap:12px;display:grid}.analytics-campaign-item{border:1px solid var(--app-line);background:#ffffffbd;border-radius:14px;grid-template-columns:minmax(0,1.3fr) minmax(260px,.9fr) auto;align-items:center;gap:14px;min-width:0;padding:14px;display:grid}.analytics-campaign-main{gap:6px;min-width:0;display:grid}.analytics-campaign-main h3{color:var(--app-text);overflow-wrap:anywhere;margin:0;font-size:1rem;font-weight:900}.analytics-campaign-main code,.analytics-campaign-url-box code{border:1px solid var(--app-line);min-width:0;color:var(--app-text);overflow-wrap:anywhere;white-space:normal;background:#ffffffc7;border-radius:10px;padding:10px;font-size:.78rem;font-weight:800;display:block}.analytics-campaign-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:grid}.analytics-campaign-stats span{min-width:0;color:var(--app-muted);gap:2px;font-size:.74rem;font-weight:800;display:grid}.analytics-campaign-stats strong{color:var(--app-brand);font-size:.95rem;font-weight:900}.analytics-campaign-url-box{gap:8px;margin-top:12px;display:grid}.analytics-campaign-url-box span{color:var(--app-muted);font-size:.8rem;font-weight:900}.analytics-action-type{font-size:.76rem}.analytics-action-item strong{color:var(--app-text);font-size:.9rem}.analytics-action-item span:last-child{color:var(--app-muted);font-size:.78rem;font-weight:700}.analytics-user-profile{color:var(--app-muted);overflow-wrap:anywhere;margin:-8px 0 0;font-size:.84rem;font-weight:800;line-height:1.5}.analytics-user-table{gap:8px;display:grid}.analytics-user-table-head,.analytics-user-row{grid-template-columns:minmax(190px,1.5fr) repeat(6,minmax(82px,.7fr));align-items:center;gap:10px;display:grid}.analytics-user-table-head{color:var(--app-muted);padding:0 12px;font-size:.74rem;font-weight:900}.analytics-user-row{border:1px solid var(--app-line);min-width:0;color:inherit;background:#ffffffc7;border-radius:14px;padding:12px;text-decoration:none;transition:border-color .16s,background .16s,transform .16s}.analytics-user-row:focus-visible,.analytics-user-row:hover{border-color:var(--app-brand-border);background:var(--app-surface-strong);transform:translateY(-1px)}.analytics-user-cell{gap:4px;min-width:0;display:grid}.analytics-user-cell small{color:var(--app-muted);font-size:.72rem;font-weight:800;display:none}.analytics-user-cell strong{min-width:0;color:var(--app-text);overflow-wrap:anywhere;font-size:.92rem;font-weight:900}.analytics-user-identity strong{font-size:.96rem}.analytics-user-identity small{overflow-wrap:anywhere;line-height:1.35;display:block}.analytics-log-item strong{font-size:.82rem}.admin-heading-row{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.admin-eyebrow{color:var(--app-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 6px;font-size:.74rem;font-weight:900}.admin-title{border-bottom:0;padding-bottom:0}.admin-total-badge{background:var(--app-brand-soft);min-height:42px;color:var(--app-brand);border:1px solid var(--app-brand-border);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:8px 12px;font-size:.92rem;font-weight:900;text-decoration:none;display:inline-flex}.support-list{gap:12px;display:grid}.support-item{border:1px solid var(--app-line);background:#ffffffb8;border-radius:16px;gap:8px;padding:14px;display:grid}.support-link-item{color:inherit;text-decoration:none}.support-date,.support-body,.support-reply{color:var(--app-muted);margin:0;font-size:.85rem;line-height:1.7}.support-title{color:var(--app-text);margin:0;font-size:1rem;font-weight:900;line-height:1.4}.support-reply{border-top:1px solid var(--app-line);padding-top:8px}.support-section-title{color:var(--app-text);margin:0 0 12px;font-size:1rem;font-weight:900}.support-check-group{gap:10px;display:grid}.support-check-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.support-mini-button{background:var(--app-brand-soft);min-height:34px;color:var(--app-brand);border:1px solid var(--app-brand-border);font:inherit;cursor:pointer;border-radius:999px;padding:7px 11px;font-size:.78rem;font-weight:900}.support-check-grid ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:0;display:grid}.support-check-grid li{list-style:none}.support-check-grid label{border:1px solid var(--app-line);min-height:42px;color:var(--app-text);background:#ffffffbd;border-radius:14px;align-items:center;gap:8px;padding:10px 12px;font-size:.85rem;font-weight:800;display:flex}.admin-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.admin-stat-card{border:1px solid var(--app-line);background:#ffffffc7;border-radius:15px;gap:4px;padding:12px;display:grid}.admin-stat-label{color:var(--app-muted);font-size:.78rem;font-weight:800}.app-menu-item-badge{margin-left:auto}.admin-stat-value{color:var(--app-text);font-size:1.18rem;font-weight:900}.admin-stat-subvalue,.stats-period{color:var(--app-muted);font-size:.84rem;font-weight:800}.stats-period{margin:-4px 0 0;line-height:1.6}.admin-search-form{gap:8px;display:grid}.admin-search-controls{grid-template-columns:minmax(0,1.2fr) minmax(160px,.8fr) auto;align-items:end;gap:10px;display:grid}.admin-filter-field{gap:8px;min-width:0;display:grid}.admin-search-button,.admin-user-menu-button,.admin-menu-action{justify-content:center;align-items:center;display:inline-flex}.app-menu-badge,.app-menu-item-badge{color:#fff;background:#ef4444;border-radius:999px;justify-content:center;align-items:center;min-width:20px;min-height:20px;font-size:.68rem;font-weight:900;line-height:1;display:inline-flex}.app-menu-badge{border:2px solid #fff;position:absolute;top:-4px;right:-4px}.admin-search-button{background:var(--app-brand-soft);min-height:46px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:14px;gap:6px;padding:10px 14px;font-weight:900}.admin-search-button .material-symbols-outlined{font-size:1.2rem}.admin-user-list{gap:10px;display:grid}.admin-result-count{color:var(--app-muted);margin:10px 0 0;font-size:.82rem;font-weight:800}.admin-pagination{justify-content:center;align-items:center;gap:10px;margin-top:14px;display:flex}.admin-page-link,.admin-page-status{border-radius:12px;justify-content:center;align-items:center;min-height:38px;font-size:.84rem;font-weight:900;display:inline-flex}.admin-page-link{border:1px solid var(--app-brand-border);background:var(--app-brand-soft);min-width:72px;color:var(--app-brand);padding:8px 12px;text-decoration:none}.admin-page-link.is-disabled{border-color:var(--app-line);color:var(--app-muted);background:#94a3b824}.admin-page-status{min-width:64px;color:var(--app-muted)}.admin-user-card{border:1px solid var(--app-line);background:#ffffffc7;border-radius:16px;grid-template-columns:1fr auto;align-items:flex-start;gap:10px;padding:12px;display:grid;position:relative}.admin-user-main{align-items:flex-start;gap:11px;min-width:0;display:flex}.admin-user-avatar{flex:none;width:42px;height:42px}.admin-user-copy{gap:4px;min-width:0;display:grid}.admin-user-name-row{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.admin-user-name{min-width:0;color:var(--app-text);overflow-wrap:anywhere;margin:0;font-size:.96rem;font-weight:900}.admin-user-meta{color:var(--app-muted);overflow-wrap:anywhere;margin:0;font-size:.8rem;font-weight:700}.admin-role-badge,.admin-status-badge{white-space:nowrap;border-radius:999px;align-items:center;min-height:24px;padding:4px 8px;font-size:.7rem;font-weight:900;display:inline-flex}.admin-role-badge{background:var(--app-brand-soft);color:var(--app-brand);border:1px solid var(--app-brand-border)}.admin-role-super{color:#8a5a00;background:#fff4d8;border-color:#f1cf7a}.admin-status-badge{color:#9f1d1d;background:#fff0f0;border:1px solid #f1c7c7}.admin-user-menu-wrap{z-index:4;position:relative}.admin-user-menu-button{background:var(--app-surface-strong);width:40px;height:40px;color:var(--app-brand);border:1px solid var(--app-line);border-radius:999px}.admin-user-menu{border:1px solid var(--app-line);background:#fffffffa;border-radius:16px;gap:8px;width:min(230px,100vw - 56px);padding:10px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 42px #132e5029}.admin-menu-action{width:100%;min-height:42px;color:var(--app-text);border:1px solid var(--app-line);text-align:left;background:#ffffffd1;border-radius:12px;gap:8px;padding:9px 10px;font-weight:900;text-decoration:none}.admin-menu-action .material-symbols-outlined{color:var(--app-university-accent);font-size:1.15rem}.admin-menu-action:disabled{cursor:not-allowed;opacity:.48}.admin-menu-warning{color:#8a5a00}.admin-menu-warning .material-symbols-outlined{color:#b77900}.admin-menu-danger{color:#9f1d1d}.admin-menu-danger .material-symbols-outlined{color:#c53a3a}.admin-menu-note,.admin-empty{color:var(--app-muted);margin:0;font-size:.78rem;font-weight:700;line-height:1.5}.admin-profile-overview,.admin-profile-field-row,.admin-profile-actions{align-items:center;display:flex}.admin-profile-overview{gap:14px}.admin-profile-avatar{flex:none;width:64px;height:64px;font-size:1.3rem}.admin-profile-copy{gap:4px;min-width:0;display:grid}.admin-profile-copy h3,.admin-profile-copy p{overflow-wrap:anywhere;min-width:0;margin:0}.admin-profile-copy h3{color:var(--app-text);font-size:1.05rem;font-weight:900}.admin-profile-copy p{color:var(--app-muted);font-size:.82rem;font-weight:800}.admin-profile-moderation-form,.admin-profile-field-list{gap:10px;display:grid}.admin-profile-field-row{border:1px solid var(--app-line);background:#ffffffc7;border-radius:14px;gap:12px;min-width:0;padding:13px}.admin-profile-field-row.is-empty{opacity:.62}.admin-profile-field-row input{width:18px;height:18px;accent-color:var(--app-brand);flex:none}.admin-profile-field-main{gap:4px;min-width:0;display:grid}.admin-profile-field-main strong{color:var(--app-text);font-size:.9rem;font-weight:900}.admin-profile-field-main small{color:var(--app-muted);overflow-wrap:anywhere;font-size:.8rem;font-weight:750;line-height:1.5}.admin-profile-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:8px}.admin-profile-danger-button{color:#9f1d1d;background:#fff0f0;border-color:#f1c7c7}.account-title{border-bottom:1px solid var(--app-line);padding-bottom:12px}.account-profile{align-items:center;gap:12px;display:flex}.account-avatar{flex-shrink:0;width:54px;height:54px;font-size:1.15rem}.account-details{gap:10px;margin:0;display:grid}.account-details div{border:1px solid var(--app-line);background:#ffffffc7;border-radius:15px;grid-template-columns:96px 1fr;align-items:center;gap:12px;padding:12px;display:grid}.account-details dt{color:var(--app-muted);font-size:.82rem;font-weight:800}.account-details dd{min-width:0;color:var(--app-text);overflow-wrap:anywhere;margin:0;font-weight:800}.account-dev-controls{grid-template-columns:1fr auto;gap:10px;display:grid}.account-link-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.account-link-button{background:var(--app-brand-soft);min-height:52px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:15px;justify-content:center;align-items:center;gap:6px;padding:10px 8px;font-size:.84rem;font-weight:800;text-decoration:none;display:inline-flex}.account-link-button .material-symbols-outlined{font-size:1.2rem}.account-social-section,.account-social-list{gap:12px;display:grid}.account-social-row{border:1px solid var(--app-line);background:var(--app-surface-strong);border-radius:16px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.account-social-provider{align-items:center;gap:10px;min-width:0;display:flex}.account-social-mark{width:24px;height:24px;color:inherit;flex:none;justify-content:center;align-items:center;display:inline-flex}.account-social-provider .account-social-mark{color:#fff;background:#111827;border-radius:50%;width:36px;height:36px}.account-social-provider .account-social-google{color:#1f1f1f;background:#fff;border:1px solid #747775}.account-social-provider .account-social-line{background:#06c755}.account-social-mark .social-provider-icon{width:20px;height:20px;display:block}.account-social-name{color:var(--app-text);margin:0;font-weight:900}.account-social-add-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.account-secondary-button{border:1px solid var(--app-brand-border);background:var(--app-surface);min-height:44px;color:var(--app-brand);border-radius:14px;justify-content:center;align-items:center;gap:7px;padding:10px 13px;font-weight:850;display:inline-flex}.account-secondary-button.danger{color:#b42318;border-color:#b4231838}.account-secondary-button:disabled{cursor:not-allowed;opacity:.45}.account-social-add-button{color:#1f1f1f;background:#fff;border-color:#747775;border-radius:8px;justify-content:center;gap:12px;width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:.875rem;font-weight:500;line-height:20px}.account-social-add-button.account-social-apple,.account-social-add-button.account-social-github,.account-social-add-button.account-social-twitter_oauth2{color:#fff;background:#111827;border-color:#111827}.account-social-add-button.account-social-apple{background:#000;border-color:#000}.account-social-add-button.account-social-line{color:#fff;background:#06c755;border-color:#06c755}.account-form{gap:14px;display:grid}.account-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.account-checkbox-row{color:var(--app-text);align-items:center;gap:9px;font-weight:800;display:inline-flex}.account-field{gap:7px;display:grid}.account-label{color:var(--app-muted);font-size:.82rem;font-weight:800}.account-input,.account-select,.account-textarea,.account-file-input{border:1px solid var(--app-line);width:100%;min-height:46px;color:var(--app-text);font:inherit;background:#ffffffe0;border-radius:14px;padding:11px 13px;font-weight:700}.account-textarea{resize:vertical;min-height:108px;line-height:1.6}.account-file-input{padding:10px;font-size:.9rem}.account-file-input::file-selector-button{background:var(--app-brand-soft);color:var(--app-brand);font:inherit;cursor:pointer;border:0;border-radius:12px;margin-right:12px;padding:9px 12px;font-weight:800}.account-input:focus,.account-select:focus,.account-textarea:focus,.account-file-input:focus{border-color:var(--app-brand-border);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.account-icon-editor{grid-template-columns:auto 1fr;align-items:center;gap:14px;display:grid}.account-avatar-large{width:76px;height:76px;font-size:1.4rem}.account-crop-frame{border:1px solid var(--app-line);background:#ffffffe0;border-radius:18px;overflow:hidden}.account-crop-frame img{width:100%;max-height:320px;display:block}.account-actions{justify-content:flex-end;display:flex}.account-circle-editor{gap:10px;display:grid}.account-circle-tags{flex-wrap:wrap;gap:8px;display:flex}.account-circle-tag{background:var(--app-brand-soft);min-height:36px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:999px;align-items:center;gap:6px;padding:7px 8px 7px 12px;font-size:.86rem;font-weight:800;display:inline-flex}.account-circle-remove{width:24px;height:24px;color:var(--app-brand);background:#ffffffb8;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.account-circle-remove .material-symbols-outlined{font-size:1rem}.account-circle-controls{grid-template-columns:1fr auto;gap:10px;display:grid}.account-add-button{background:var(--app-surface-strong);min-height:46px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:10px 14px;font-weight:800;display:inline-flex;box-shadow:0 8px 16px #132e5014}.account-add-button .material-symbols-outlined{font-size:1.2rem}.account-submit{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;min-height:48px;box-shadow:0 14px 28px var(--app-brand-shadow);border:0;border-radius:15px;justify-content:center;align-items:center;gap:8px;padding:12px 16px;font-weight:800;display:inline-flex}.account-submit .material-symbols-outlined{font-size:1.25rem}.account-secondary-submit{background:var(--app-surface-strong);min-height:48px;color:var(--app-brand);border:1px solid var(--app-brand-border);box-shadow:none;cursor:pointer;border-radius:15px}.admin-form-actions{flex-wrap:wrap;gap:10px;display:flex}.admin-form-actions .account-submit,.admin-form-actions .account-secondary-submit{flex:180px}.account-field-error,.account-error-list{color:#b42318;font-size:.8rem;font-weight:700}.account-error-list ul{margin:0;padding-left:18px}.app-connection-pill{color:#17663d;white-space:nowrap;background:#e7f7efd1;border:1px solid #1987542e;border-radius:999px;align-items:center;gap:6px;margin:0;padding:6px 9px;font-size:.72rem;font-weight:800;line-height:1.2;display:inline-flex}.app-connection-dot{background:#20c46b;border-radius:999px;flex:none;width:8px;height:8px;box-shadow:0 0 0 4px #20c46b24}.friend-connection-row{justify-content:center;margin:-4px 0 2px;display:flex}.friend-card{gap:16px;min-width:0;max-width:100%;display:grid}.friend-invite-card{gap:18px}.friend-collapsible-card{align-content:start}.friend-collapsible-card:not([open]){padding-bottom:14px}.friend-card-summary,.friend-profile-network-summary{cursor:pointer;min-width:0;list-style:none}.friend-card-summary{align-items:center;gap:10px;display:flex}.friend-card-summary::-webkit-details-marker{display:none}.friend-profile-network-summary::-webkit-details-marker{display:none}.friend-collapsible-card[open]>.friend-card-summary{padding-bottom:2px}.friend-summary-meta{min-width:0;color:var(--app-muted);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;font-size:.82rem;font-weight:800;overflow:hidden}.friend-summary-count{color:var(--app-brand);white-space:nowrap;z-index:1;background:#ffffffdb;border-radius:999px;flex:none;margin-left:-6px;padding:4px 8px;font-size:.8rem;font-weight:900}.friend-summary-icon{color:var(--app-muted);flex:none;margin-left:auto;transition:transform .16s,color .16s}.friend-collapsible-card[open]>.friend-card-summary .friend-summary-icon,.friend-profile-network-details[open]>.friend-profile-network-summary .friend-summary-icon{color:var(--app-university-accent);transform:rotate(180deg)}.friend-avatar-stack{flex:0 auto;align-items:center;min-width:0;padding-left:10px;display:inline-flex}.friend-avatar-stack-item{border:2px solid var(--app-surface);background:var(--app-brand-soft);width:34px;height:34px;color:var(--app-brand);border-radius:13px;flex:none;justify-content:center;align-items:center;margin-left:-10px;font-size:.78rem;font-weight:900;display:inline-flex;overflow:hidden;box-shadow:0 8px 16px #132e501f}.friend-avatar-stack-item img{object-fit:cover;width:100%;height:100%}.friend-card-heading-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.friend-collapsible-card>.friend-card-heading-row{justify-content:flex-end}.friend-list-heading-row{align-items:center}.friend-heading-actions{flex:none;justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex}.friend-card-title{align-items:center;gap:8px;display:flex}.friend-card-summary .friend-card-title{flex:auto;min-width:0}.friend-card-title .material-symbols-outlined{color:var(--app-university-accent)}.friend-id-panel{background:var(--app-brand-soft);border-radius:16px;justify-content:space-between;align-items:center;gap:14px;min-width:0;max-width:100%;padding:18px;display:flex}.friend-panel-label{color:var(--app-muted);margin:0;font-size:.88rem;font-weight:600}.friend-user-id{color:var(--app-university-accent);letter-spacing:.04em;white-space:nowrap;margin:6px 0 0;font-size:1.55rem;font-weight:800;line-height:1}.friend-copy-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:10px;min-width:0;max-width:100%;display:flex}.friend-copy-button,.friend-primary-action,.friend-secondary-action,.friend-mini-action{background:var(--app-surface-strong);min-width:0;min-height:46px;color:var(--app-text);border:1px solid var(--app-line);white-space:nowrap;border-radius:13px;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-weight:800;text-decoration:none;display:inline-flex;box-shadow:0 8px 16px #132e501a}.friend-secondary-action{background:var(--app-brand-soft);min-height:42px;color:var(--app-brand);border-color:var(--app-brand-border);box-shadow:none;padding:9px 12px}.friend-secondary-action .material-symbols-outlined{font-size:1.12rem}.friend-action-count{background:var(--app-university-accent);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 7px;font-size:.76rem;font-weight:900;display:inline-flex}.friend-request-form{gap:8px;display:grid}.friend-search-form{border:1px solid var(--app-line);background:#ffffff94;border-radius:16px;gap:8px;padding:12px;display:grid}.friend-request-label,.friend-request-subtitle{color:var(--app-muted);font-size:.82rem;font-weight:800}.friend-request-controls,.friend-search-controls{grid-template-columns:1fr auto;gap:10px;min-width:0;display:grid}.friend-search-reset{color:var(--app-brand);justify-self:end;font-size:.82rem;font-weight:900;text-decoration:none}.friend-request-input{border:1px solid var(--app-line);background:var(--app-surface-strong);width:100%;min-width:0;min-height:46px;color:var(--app-text);font:inherit;letter-spacing:.06em;border-radius:13px;padding:10px 14px;font-weight:800}.friend-request-input:focus{border-color:var(--app-brand-border);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.friend-request-preview{background:var(--app-brand-soft);border-radius:16px;align-items:center;gap:12px;min-width:0;max-width:100%;padding:12px;display:flex}.friend-invite-modal-target{border:1px solid var(--app-brand-border);background:var(--app-brand-soft);border-radius:16px;align-items:center;gap:12px;min-width:0;padding:14px;display:flex}.friend-invite-modal-form{gap:14px;display:grid}.friend-action-confirm-body{border:1px solid var(--app-line);background:#ffffffa3;border-radius:16px;grid-template-columns:44px minmax(0,1fr);align-items:start;gap:12px;padding:12px;display:grid}.friend-action-confirm-icon{background:var(--app-brand-soft);width:44px;height:44px;color:var(--app-brand);border-radius:14px;justify-content:center;align-items:center;display:inline-flex}.friend-action-confirm-icon.is-danger{color:#b42318;background:#c4000014}.friend-request-columns,.friend-request-box{gap:12px;display:grid}.friend-request-subtitle{margin:0}.friend-request-item{align-items:flex-start}.friend-request-actions{flex-shrink:0;gap:8px;margin-left:auto;display:flex}.friend-icon-action{background:var(--app-surface-strong);width:38px;height:38px;color:var(--app-muted);border:1px solid var(--app-line);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.friend-icon-action.is-approve{background:var(--app-brand-soft);color:var(--app-brand);border-color:var(--app-brand-border)}.friend-icon-action.is-danger{color:#b42318;background:#c4000014;border-color:#c400002e}.friend-request-badge{background:var(--app-brand-soft);color:var(--app-brand);white-space:nowrap;border-radius:999px;margin-left:auto;padding:7px 10px;font-size:.76rem;font-weight:800}.friend-primary-action:disabled,.friend-secondary-action:disabled,.friend-icon-action:disabled{cursor:wait;opacity:.66;transform:none}.friend-discovery-layout{min-width:0;display:block}.friend-privacy-form{border:1px solid var(--app-line);background:#ffffffa3;border-radius:16px;gap:14px;min-width:0;padding:14px;display:grid}.friend-privacy-modal-form{background:0 0;border:0;border-radius:0;padding:0}.friend-privacy-switch{align-items:center;gap:12px;min-width:0;display:flex}.friend-privacy-switch input,.friend-privacy-option input{opacity:0;pointer-events:none;position:absolute}.friend-privacy-switch input:checked+.friend-toggle-track{background:var(--app-university-accent);border-color:var(--app-university-accent)}.friend-privacy-switch input:checked+.friend-toggle-track:after{transform:translate(20px)}.friend-privacy-switch:has(input:focus-visible),.friend-privacy-option:has(input:focus-visible) span{box-shadow:0 0 0 4px var(--app-brand-ring)}.friend-privacy-switch:has(input:focus-visible){border-radius:14px}.friend-privacy-option:has(input:focus-visible) span{border-color:var(--app-university-accent)}.friend-privacy-fieldset{border:0;gap:8px;min-width:0;margin:0;padding:0;display:grid}.friend-privacy-options{gap:8px;display:grid}.friend-privacy-option{min-width:0;display:block}.friend-privacy-option span{border:1px solid var(--app-line);background:var(--app-surface-strong);min-height:42px;color:var(--app-text);border-radius:13px;align-items:center;padding:9px 12px;font-size:.86rem;font-weight:800;transition:border-color .16s,background-color .16s,color .16s;display:flex}.friend-privacy-option input:checked+span{border-color:var(--app-brand-border);background:var(--app-brand-soft);color:var(--app-brand)}.friend-privacy-actions{justify-content:flex-end;display:flex}.friend-discovery-settings-row{justify-content:flex-end;margin-bottom:4px;padding-top:2px;display:flex}.friend-settings-action{flex-shrink:0;width:auto}.friend-discovery-results{overscroll-behavior:contain;scrollbar-gutter:stable;min-width:0;max-height:clamp(260px,42vh,420px);padding-right:4px;overflow-y:auto}.friend-vertical-scroll-shell{min-width:0;max-width:100%;position:relative}.friend-list-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;max-height:clamp(420px,62dvh,720px);padding-right:4px;overflow-y:auto}.friend-vertical-scroll-arrow{z-index:3;width:34px;height:34px;color:var(--app-brand);opacity:0;pointer-events:none;background:#f8fbfff0;border:1px solid #bccbdedb;border-radius:999px;justify-content:center;align-items:center;transition:opacity .16s,background-color .16s,color .16s,box-shadow .16s;display:inline-flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 10px 22px #132e5029}.friend-vertical-scroll-arrow:hover{background:var(--app-surface-strong);color:var(--app-university-accent);box-shadow:0 12px 26px #132e5033}.friend-vertical-scroll-arrow:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.friend-vertical-scroll-shell:hover .friend-vertical-scroll-arrow,.friend-vertical-scroll-shell:focus-within .friend-vertical-scroll-arrow{opacity:1;pointer-events:auto}.friend-vertical-scroll-arrow.is-up{top:6px}.friend-vertical-scroll-arrow.is-down{bottom:6px}.friend-vertical-scroll-arrow .material-symbols-outlined{font-size:1.3rem}.friend-profile-open-row{cursor:pointer}.friend-profile-open-row:hover{border-color:var(--app-brand-border);background:#ffffffeb}.friend-discovery-results .friend-list{gap:8px}.friend-discovery-item{border-radius:14px;align-items:center;gap:10px;padding:10px 11px}.friend-discovery-item .friend-list-avatar{border-radius:12px;width:36px;height:36px}.friend-discovery-item .friend-list-title{font-size:.9rem}.friend-discovery-item .friend-list-meta{margin-top:2px;font-size:.78rem}.friend-discovery-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.friend-discovery-actions form{display:flex}.friend-discovery-status{width:100%;color:var(--app-brand);text-align:right;margin:0;font-size:.78rem;font-weight:800}.friend-discovery-status.is-error{color:#b42318}.friend-discovery-action{min-height:34px;box-shadow:none;border-radius:999px;padding:7px 10px}.friend-discovery-cancel-action{color:var(--app-muted)}.friend-primary-action{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;box-shadow:0 14px 26px var(--app-brand-shadow);border-color:#0000}.friend-copy-button .material-symbols-outlined,.friend-primary-action .material-symbols-outlined{font-size:1.25rem}.friend-line-share-button{color:#067a38;background:#ecfdf3eb;border-color:#067a3838;box-shadow:0 8px 16px #067a381a}.friend-line-logo{flex:none;width:24px;height:24px;display:block}.friend-signup-invite-card{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}.friend-signup-invite-copy{gap:6px;min-width:0;display:grid}.friend-signup-invite-button{white-space:nowrap}.friend-signup-invite-modal{max-width:min(520px,100vw - 24px)}.friend-signup-invite-body{gap:12px;display:grid}.friend-share-url-panel{background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:14px;gap:5px;min-width:0;padding:12px;display:grid}.friend-share-url-text{color:var(--app-text);overflow-wrap:anywhere;font-size:.84rem;font-weight:800;line-height:1.5}.friend-share-actions{flex-wrap:wrap;gap:10px;display:flex}.friend-signup-invite-qr{padding:14px}.friend-copy-feedback{color:var(--app-brand);margin:-8px 0 0;font-size:.84rem;font-weight:700}.friend-qr-frame{background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:16px;justify-content:center;padding:18px;display:flex}.friend-invite-card .friend-qr-frame{margin-top:8px}.friend-qr-frame img{width:min(220px,78%);height:auto;image-rendering:pixelated}.friend-qr-scanner-modal{max-width:min(520px,100vw - 24px)}.friend-qr-scanner-body{gap:12px;display:grid}.friend-qr-scanner-preview{aspect-ratio:1;background:var(--app-text);border:1px solid var(--app-line);border-radius:18px;position:relative;overflow:hidden}.friend-qr-scanner-preview video{object-fit:cover;width:100%;height:100%;display:block}.friend-qr-scanner-frame{border:2px solid #ffffffdb;border-radius:18px;position:absolute;inset:16%;box-shadow:0 0 0 999px #0b122047}.friend-qr-scanner-status{color:var(--app-muted);margin:0;font-size:.84rem;font-weight:800}.friend-qr-scanner-status.is-error{color:#b42318}.friend-qr-scanner-permission{justify-self:start}.friend-qr-scanner-manual{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.friend-list{gap:10px;display:grid}.friend-location-list{gap:12px;display:grid}.friend-location-card,.friend-location-status-card{width:100%;min-width:0}.friend-location-item,.friend-location-empty{border:1px solid var(--app-line);background:#ffffffd6;border-radius:18px;align-items:flex-start;gap:12px;min-width:0;padding:14px;display:flex}.friend-location-item.is-active{background:var(--app-brand-soft);border-color:var(--app-brand-border)}.friend-location-group{align-items:flex-start}.friend-location-copy{flex:auto;min-width:0}.friend-location-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.friend-location-heading .friend-list-title,.friend-location-heading .friend-list-meta{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;flex:auto;min-width:0;overflow:visible}.friend-location-state{color:var(--app-muted);background:#ffffffc2;border-radius:999px;flex-shrink:0;padding:6px 9px;font-size:.74rem;font-weight:800}.friend-location-state.is-live{color:var(--app-brand);border:1px solid var(--app-brand-border)}.friend-location-place{color:var(--app-text);overflow-wrap:anywhere;margin:7px 0 0;font-size:.9rem;font-weight:800;line-height:1.45}.friend-location-note{border:1px solid var(--app-line);color:var(--app-text);background:#ffffffc2;border-radius:14px;align-items:flex-start;gap:8px;margin-top:10px;padding:10px 12px;display:flex}.friend-location-note .material-symbols-outlined{color:var(--app-university-accent);flex-shrink:0;font-size:1.1rem}.friend-location-note p{overflow-wrap:anywhere;margin:0;font-size:.86rem;font-weight:700;line-height:1.55}.friend-location-note-more{color:var(--app-brand);margin-top:8px;font-size:.82rem;font-weight:800}.friend-location-group-members{gap:10px;margin-top:12px;display:grid}.friend-location-member{background:#ffffffb3;border:1px solid #ffffffc7;border-radius:14px;align-items:flex-start;gap:10px;min-width:0;padding:10px;display:flex}.friend-location-member-copy{flex:auto;min-width:0}.friend-location-note-full{background:var(--app-surface-strong);border:1px solid var(--app-line);max-height:min(48vh,360px);color:var(--app-text);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:16px;padding:14px;font-size:.94rem;font-weight:700;line-height:1.75;overflow:auto}.friend-list-item{border:1px solid var(--app-line);background:#ffffffd1;border-radius:16px;align-items:center;gap:12px;min-width:0;max-width:100%;padding:12px;display:flex}.friend-list-item-stacked{align-items:stretch;gap:10px;display:grid}.friend-list-main{align-items:center;gap:12px;min-width:0;display:flex}.friend-list-secondary{grid-template-columns:minmax(0,1fr);align-items:center;gap:10px;min-width:0;padding-left:54px;display:grid}.friend-list-secondary.has-badge{grid-template-columns:auto minmax(0,1fr)}.friend-list-actions-scroll{width:100%;min-width:0;max-width:100%;position:relative;overflow:hidden}.friend-list-secondary .friend-list-actions{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;justify-content:flex-end;width:100%;max-width:100%;margin-left:0;scroll-padding-inline:42px;overflow-x:auto}.friend-list-secondary .friend-list-actions::-webkit-scrollbar{display:none}.friend-list-action-scroll-arrow{z-index:2;width:30px;height:30px;color:var(--app-brand);opacity:0;pointer-events:none;background:#f8fbfff0;border:1px solid #bccbdedb;border-radius:999px;justify-content:center;align-items:center;transition:opacity .16s,background-color .16s,color .16s,box-shadow .16s;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 10px 22px #132e5029}.friend-list-action-scroll-arrow:hover{background:var(--app-surface-strong);color:var(--app-university-accent);box-shadow:0 12px 26px #132e5033}.friend-list-action-scroll-arrow:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.friend-list-actions-scroll:hover .friend-list-action-scroll-arrow,.friend-list-actions-scroll:focus-within .friend-list-action-scroll-arrow{opacity:1;pointer-events:auto}.friend-list-action-scroll-arrow.is-left{left:4px}.friend-list-action-scroll-arrow.is-right{right:4px}.friend-list-action-scroll-arrow .material-symbols-outlined{font-size:1.2rem}@media (hover:none){.friend-vertical-scroll-shell .friend-vertical-scroll-arrow,.friend-list-actions-scroll .friend-list-action-scroll-arrow{opacity:.94;pointer-events:auto}}.friend-list-location{box-sizing:border-box;background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:14px;justify-self:stretch;align-items:flex-start;gap:10px;width:100%;min-width:0;padding:10px 12px;display:flex}.friend-list-location.is-active{background:var(--app-brand-soft);border-color:var(--app-brand-border)}.friend-list-location.is-muted{color:var(--app-muted)}.friend-list-location>.material-symbols-outlined{color:var(--app-brand);flex-shrink:0;font-size:1.15rem;line-height:1.35}.friend-list-location.is-muted>.material-symbols-outlined{color:var(--app-muted)}.friend-list-location-copy{flex:auto;width:100%;min-width:0}.friend-list-location-place{color:var(--app-text);overflow-wrap:anywhere;margin:0;font-size:.86rem;font-weight:800;line-height:1.45}.friend-list-location-note{margin-top:8px}.friend-list-location-note p{color:var(--app-text);overflow-wrap:anywhere;margin:0;font-size:.82rem;font-weight:700;line-height:1.55}.friend-profile-panel{border:1px solid var(--app-line);background:#ffffffb3;border-radius:14px;gap:10px;min-width:0;padding:12px;display:grid}.friend-profile-panel-heading,.friend-profile-network-heading{min-width:0;color:var(--app-brand);align-items:center;gap:6px;font-size:.8rem;font-weight:900;display:flex}.friend-profile-panel-heading .material-symbols-outlined,.friend-profile-network-heading .material-symbols-outlined{font-size:1rem}.friend-profile-network-heading strong{background:var(--app-brand-soft);min-width:22px;height:22px;color:var(--app-brand);border-radius:999px;justify-content:center;align-items:center;margin-left:auto;padding-inline:7px;font-size:.74rem;display:inline-flex}.friend-profile-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.friend-profile-summary-grid p{gap:2px;min-width:0;margin:0;display:grid}.friend-profile-summary-grid span,.friend-profile-network-empty,.friend-profile-network-more{color:var(--app-muted);font-size:.74rem;font-weight:800}.friend-profile-summary-grid strong,.friend-profile-bio{color:var(--app-text);overflow-wrap:anywhere;font-size:.84rem;font-weight:800;line-height:1.5}.friend-profile-bio,.friend-profile-network-empty{margin:0}.friend-profile-network{gap:8px;min-width:0;display:grid}.friend-profile-network-summary{padding:2px 0}.friend-profile-avatar-stack{margin-left:auto}.friend-profile-network-list{flex-wrap:wrap;gap:7px;min-width:0;display:flex}.friend-profile-network-user,.friend-profile-network-more{background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:999px;align-items:center;gap:6px;min-width:0;max-width:100%;padding:6px 8px;display:inline-flex}.friend-profile-network-user span:last-child{min-width:0;color:var(--app-text);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:900;overflow:hidden}.friend-profile-network-avatar{background:var(--app-brand-soft);width:22px;height:22px;color:var(--app-brand);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:.72rem;font-weight:900;display:inline-flex;overflow:hidden}.friend-profile-network-avatar img{object-fit:cover;width:100%;height:100%}.friend-profile-modal{max-width:min(560px,100vw - 24px)}.friend-profile-modal-panel{gap:14px;display:grid}.friend-profile-modal-header{grid-template-columns:40px minmax(0,1fr) 40px;align-items:center;gap:10px;display:grid}.friend-profile-modal-heading{min-width:0}.friend-profile-modal-back{justify-self:start}.friend-profile-modal-header-spacer{width:40px;height:40px}.friend-profile-modal-body{gap:14px;min-width:0;display:grid}.friend-profile-modal-user{border:1px solid var(--app-line);background:#ffffffb8;border-radius:16px;align-items:center;gap:12px;min-width:0;padding:12px;display:flex}.friend-profile-modal-avatar{border-radius:18px;width:54px;height:54px}.friend-profile-network-scroll{gap:8px;max-height:min(34dvh,320px);padding-right:2px;display:grid;overflow-y:auto}.friend-profile-network-row{border:1px solid var(--app-line);background:var(--app-surface-strong);border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.friend-profile-network-actions{justify-items:end;gap:4px;min-width:0;display:grid}.friend-profile-network-profile-action{justify-content:center;min-height:34px}.friend-profile-network-actions .friend-discovery-status{text-align:right;max-width:160px}.friend-list-avatar,.friend-list-icon{background:var(--app-brand-soft);width:42px;height:42px;color:var(--app-brand);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:inline-flex;overflow:hidden}.friend-list-avatar img,.friend-list-icon img{object-fit:cover;width:100%;height:100%}.friend-list-copy{flex:auto;min-width:0}.friend-list-actions{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.friend-list-actions form{flex:none;min-width:0;display:flex}.friend-list-title{color:var(--app-text);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.95rem;font-weight:800;overflow:hidden}.friend-list-meta,.friend-empty-text{color:var(--app-muted);margin:4px 0 0;font-size:.86rem}.friend-list-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.friend-empty-text{margin:0;line-height:1.7}.friend-close-badge{background:var(--app-brand-soft);min-height:30px;color:var(--app-brand);border:1px solid var(--app-brand-border);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:5px 9px;font-size:.78rem;font-weight:900;display:inline-flex}.friend-close-badge .material-symbols-outlined{font-size:1rem}.friend-close-form{gap:14px;display:grid}.friend-close-toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.friend-mini-action{min-width:44px;max-width:100%;min-height:36px;box-shadow:none;color:var(--app-brand);border-radius:999px;flex:none;padding:7px 10px;line-height:1}.friend-mini-action .material-symbols-outlined{flex:none;font-size:1.1rem}.friend-action-label{text-overflow:ellipsis;min-width:0;overflow:hidden}.friend-mini-action.is-danger{color:#b42318;background:#c4000014;border-color:#c400002e}.friend-mini-action.is-disabled{cursor:not-allowed;color:#8b98a7;box-shadow:none;opacity:.72;background:#eef3f8;border-color:#d7e0ea}.friend-close-list{gap:10px;max-height:min(44vh,360px);padding-right:2px;display:grid;overflow:auto}.friend-close-toggle{border:1px solid var(--app-line);background:#ffffffdb;border-radius:16px;align-items:center;gap:12px;padding:11px;display:flex}.friend-close-toggle input{opacity:0;pointer-events:none;position:absolute}.friend-toggle-track{border:1px solid var(--app-line);background:#d8e2ec;border-radius:999px;flex-shrink:0;width:48px;height:28px;transition:background .16s,border-color .16s;position:relative}.friend-toggle-track:after{content:"";background:#fff;border-radius:999px;width:20px;height:20px;transition:transform .16s;position:absolute;top:3px;left:3px;box-shadow:0 4px 12px #132e5029}.friend-close-toggle input:checked+.friend-toggle-track{background:var(--app-university-accent);border-color:var(--app-university-accent)}.friend-close-toggle input:checked+.friend-toggle-track:after{transform:translate(20px)}.friend-close-toggle:has(input:focus-visible){border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring)}.location-history-list{overscroll-behavior:contain;scrollbar-width:thin;gap:7px;max-height:188px;padding-right:2px;display:grid;overflow-y:auto}.location-recurring-list{gap:10px;display:grid}.location-recurring-item{border:1px solid var(--app-line);background:#ffffffd6;border-radius:16px;align-items:center;gap:12px;padding:14px;display:flex}.location-history-item{border:1px solid var(--app-line);background:#ffffffd6;border-radius:14px;align-items:center;gap:9px;width:100%;padding:9px 10px;display:flex}.location-history-button{color:var(--app-text);text-align:left;transition:border-color .16s,background-color .16s,transform .16s}.location-history-button:hover,.location-history-button:focus-visible{border-color:var(--app-brand-border);background:var(--app-surface-strong);transform:translateY(-1px)}.location-history-button:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.location-history-item.is-empty{justify-content:center}.location-recurring-item{align-items:flex-start}.location-history-icon{background:var(--app-brand-soft);width:34px;height:34px;color:var(--app-brand);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.location-history-copy{min-width:0}.location-history-title{margin:0;font-size:.86rem;font-weight:700}.location-history-meta{color:var(--app-muted);margin:2px 0 0;font-size:.76rem}.location-recurring-note{color:var(--app-text);overflow-wrap:anywhere;margin:8px 0 0;font-size:.84rem;font-weight:700;line-height:1.55}.location-select-card{gap:16px;min-width:0;display:grid}.location-quick-access-card{gap:14px;display:grid}.location-quick-access-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;display:grid}.location-select-title{border-bottom:1px solid var(--app-line);align-items:center;gap:8px;padding-bottom:12px;display:flex}.location-select-title .material-symbols-outlined{color:var(--app-university-accent)}.location-campus-tabs{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;background:#dfecf7b3;border-radius:18px;gap:8px;width:100%;min-width:0;max-width:100%;padding:6px;display:flex;overflow-x:auto}.location-campus-scroll{width:100%;min-width:0;max-width:100%;position:relative;overflow:hidden}.location-campus-scroll-arrow{z-index:2;width:34px;height:34px;color:var(--app-brand);background:#f8fbfff0;border:1px solid #bccbdedb;border-radius:999px;justify-content:center;align-items:center;transition:background-color .18s,color .18s,box-shadow .18s;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 10px 24px #132e502e}.location-campus-scroll-arrow:hover{background:var(--app-surface-strong);color:var(--app-university-accent);box-shadow:0 12px 28px #132e5038}.location-campus-scroll-arrow:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.location-campus-scroll-arrow.is-left{left:8px}.location-campus-scroll-arrow.is-right{right:8px}.location-campus-scroll-arrow .material-symbols-outlined{font-size:1.35rem}.location-campus-tabs::-webkit-scrollbar{display:none}.location-campus-tab{min-width:104px;color:var(--app-muted);border:1px solid var(--app-line);background:#ffffff6b;border-radius:14px;flex:none;padding:12px 14px;font-weight:700}.location-campus-tab.is-active{background:var(--app-surface-strong);color:var(--app-brand);border-color:var(--app-brand-border);box-shadow:0 10px 22px #132e501a}.location-select-group{align-content:start;gap:10px;min-width:0;display:grid}.location-search-panel{border:1px solid var(--app-line);background:#ffffffa3;border-radius:18px;padding:12px}.location-search-field{background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:16px;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;min-height:52px;padding:0 14px;display:grid}.location-search-field:focus-within{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring)}.location-search-field .material-symbols-outlined{color:var(--app-university-accent);font-size:1.2rem}.location-search-field input{width:100%;min-width:0;color:var(--app-text);font:inherit;background:0 0;border:0;outline:0;font-size:.94rem;font-weight:800}.location-search-field input::placeholder{color:var(--app-muted);font-weight:700}.location-search-results{background:#f4f7fbb8;border:1px solid #dbe4efc2;border-radius:15px;gap:8px;max-height:260px;padding:4px;display:grid;overflow:auto}.location-search-result{background:var(--app-surface-strong);border:1px solid var(--app-line);min-height:58px;color:var(--app-text);text-align:left;border-radius:13px;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;display:grid}.location-search-result>.material-symbols-outlined{color:var(--app-university-accent);font-size:1.18rem}.location-search-result-copy{gap:3px;min-width:0;display:grid}.location-search-result-label,.location-search-result-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:1.35;overflow:hidden}.location-search-result-label{font-size:.9rem;font-weight:900}.location-search-result-meta{color:var(--app-muted);font-size:.78rem;font-weight:700}.location-search-empty{color:var(--app-muted);border:1px dashed var(--app-line-strong);text-align:center;background:#ffffffb8;border-radius:13px;margin:0;padding:12px;font-size:.84rem;font-weight:800}.location-quick-section-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.location-quick-count{color:var(--app-muted);white-space:nowrap;font-size:.78rem;font-weight:800}.location-quick-section{align-content:start;gap:10px;min-width:0;display:grid}.location-quick-section-heading{color:var(--app-brand);justify-content:flex-start;font-size:.84rem;font-weight:900}.location-quick-section-heading .material-symbols-outlined{font-size:1.05rem}.location-quick-list{overscroll-behavior:contain;scrollbar-width:thin;gap:7px;max-height:188px;padding-right:2px;display:grid;overflow-y:auto}.location-quick-item{grid-template-columns:minmax(0,1fr) 36px;align-items:stretch;gap:8px;display:grid}.location-quick-item.location-history-item{border:1px solid var(--app-line);background:#ffffffd6}.location-quick-entry-button{min-width:0;box-shadow:none;color:var(--app-text);text-align:left;background:0 0;align-items:center;gap:9px;padding:0;display:flex}.location-quick-entry-button:hover{background:0 0}.location-quick-entry-button .location-history-copy{gap:2px;display:grid}.location-quick-entry-button .location-history-title,.location-quick-entry-button .location-history-meta{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.location-quick-item:has(.location-quick-entry-button:hover),.location-quick-item:has(.location-quick-entry-button:focus-visible){border-color:var(--app-brand-border);background:var(--app-surface-strong)}.location-quick-entry-button:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px;border-radius:12px}.location-quick-delete{background:var(--app-surface);color:#9f1d1d;border:1px solid #9f1d1d33;border-radius:12px;justify-content:center;align-items:center;width:36px;min-height:42px;display:inline-flex}.location-quick-delete .material-symbols-outlined{font-size:1.05rem}.location-building-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:10px;display:grid}.location-choice-button{min-height:52px;color:var(--app-text);border:1px solid var(--app-line);background:#ffffffd1;border-radius:16px;justify-content:center;align-items:center;gap:6px;padding:12px;font-weight:700;display:flex}.location-choice-button .material-symbols-outlined{font-size:1.05rem}.location-choice-button.is-active,.location-list-button.is-active{background:var(--app-brand-soft);color:var(--app-brand);border-color:var(--app-brand-border);box-shadow:inset 0 0 0 1px var(--app-brand-ring)}.location-split-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.location-scroll-list{border:1px solid var(--app-line);background:#ffffffb8;border-radius:18px;align-content:start;gap:8px;min-height:0;max-height:220px;padding:8px;display:grid;overflow:auto}.location-vertical-scroll-shell{min-width:0;max-width:100%;position:relative}.location-vertical-scroll-arrow{z-index:3;width:34px;height:34px;color:var(--app-brand);opacity:0;pointer-events:none;background:#f8fbfff0;border:1px solid #bccbdedb;border-radius:999px;justify-content:center;align-items:center;transition:opacity .16s,background-color .16s,color .16s,box-shadow .16s;display:inline-flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 10px 22px #132e5029}.location-vertical-scroll-arrow:hover{background:var(--app-surface-strong);color:var(--app-university-accent);box-shadow:0 12px 26px #132e5033}.location-vertical-scroll-arrow:focus-visible{outline:3px solid var(--app-focus-ring);outline-offset:2px}.location-vertical-scroll-shell:hover .location-vertical-scroll-arrow,.location-vertical-scroll-shell:focus-within .location-vertical-scroll-arrow{opacity:1;pointer-events:auto}.location-vertical-scroll-arrow.is-up{top:6px}.location-vertical-scroll-arrow.is-down{bottom:6px}.location-vertical-scroll-arrow .material-symbols-outlined{font-size:1.3rem}.location-list-button{text-align:left;color:var(--app-text);border:1px solid var(--app-line);background:#ffffff80;border-radius:14px;padding:12px 14px}.location-room-button{grid-template-columns:minmax(0,1fr) 22px;align-items:center;gap:8px;min-height:48px;display:grid}.location-room-button .material-symbols-outlined{color:var(--app-university-accent);font-size:1.18rem;line-height:1}.location-submit-form{margin-top:2px}.location-submit-form.is-hidden{display:none}.location-submit-button{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;width:100%;box-shadow:0 20px 40px var(--app-brand-shadow);border-radius:18px;justify-content:center;align-items:center;gap:10px;padding:16px 18px;font-size:1rem;font-weight:800;display:inline-flex}.location-submit-button:disabled{color:#7c8d9f;box-shadow:none;cursor:default;background:#d7e1eb}.location-async-error{color:#b42318;text-align:right;margin:10px 0 0;font-size:.84rem;font-weight:800}.location-secondary-submit{background:var(--app-surface-strong);color:var(--app-brand);border:1px solid var(--app-brand-border);box-shadow:none}.location-secondary-submit:disabled{color:#8a99a8;border-color:var(--app-line);background:#ffffffad}.location-custom-place-field{border:1px solid var(--app-line);background:#ffffffdb;border-radius:16px;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;min-height:56px;padding:0 14px;display:grid}.location-custom-place-field:focus-within{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring)}.location-custom-place-field .material-symbols-outlined{color:var(--app-university-accent);font-size:1.2rem}.location-custom-place-field input{width:100%;min-width:0;color:var(--app-text);font:inherit;background:0 0;border:0;outline:0;font-size:.95rem;font-weight:700}.location-custom-place-field input::placeholder{color:var(--app-muted);font-weight:600}.location-custom-place-button{margin-top:2px}.location-custom-place-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.location-custom-place-actions form{min-width:0}.location-custom-place-actions .location-submit-button{min-height:54px;padding:13px 12px;font-size:.92rem;line-height:1.25}.location-custom-place-list{min-height:auto;max-height:260px}.location-custom-room-panel{border:1px solid var(--app-brand-border);background:#ffffffc2;border-radius:16px;gap:10px;min-width:0;padding:12px;display:grid}.location-custom-place-row{grid-template-columns:minmax(0,1fr) 44px;gap:8px;display:grid}.location-custom-place-delete{background:var(--app-surface-strong);color:#b42318;border:1px solid #b4231838;border-radius:14px;justify-content:center;align-items:center;width:44px;min-height:48px;display:inline-flex}.location-custom-place-delete .material-symbols-outlined{font-size:1.15rem}.location-note-target{background:var(--app-brand-soft);color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:16px;align-items:center;gap:8px;padding:12px 14px;font-size:.9rem;font-weight:800;line-height:1.45;display:flex}.location-note-target .material-symbols-outlined{flex-shrink:0;font-size:1.18rem}.location-favorite-toggle{background:var(--app-surface-strong);border:1px solid var(--app-line);width:100%;min-width:0;min-height:48px;color:var(--app-muted);border-radius:16px;justify-content:center;align-items:center;gap:8px;padding:11px 14px;font-size:.9rem;font-weight:900;display:inline-flex}.location-favorite-toggle span:not(.material-symbols-outlined){overflow-wrap:anywhere;min-width:0;line-height:1.45}.location-favorite-toggle input{opacity:0;pointer-events:none;position:absolute}.location-favorite-toggle .material-symbols-outlined{color:var(--app-university-accent);font-size:1.14rem}.location-favorite-toggle.is-active{background:var(--app-brand-soft);border-color:var(--app-brand-border);color:var(--app-brand)}.location-favorite-toggle:has(input:focus-visible){border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring)}.location-note-field{gap:8px;min-width:0;display:grid}.location-note-update-form{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:16px;width:100%;min-width:0;display:grid}.location-note-update-form>*{justify-self:stretch;width:100%;min-width:0}.location-schedule-time-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;min-width:0;display:grid}.location-schedule-time-grid>.location-note-field{justify-self:stretch;width:100%;min-width:0}.location-note-field span{color:var(--app-muted);font-size:.82rem;font-weight:800}.location-time-input{box-sizing:border-box;border:1px solid var(--app-line);inline-size:100%;width:100%;min-width:0;max-width:100%;min-height:46px;color:var(--app-text);font:inherit;background:#ffffffdb;border-radius:16px;padding:0 12px;font-size:.92rem;font-weight:700}.location-schedule-time-grid .location-time-input[type=time],.location-auto-exit-fields .location-time-input[type=datetime-local]{appearance:none;box-sizing:border-box;text-align:center;height:46px;justify-self:stretch;inline-size:100%;min-inline-size:0;max-inline-size:100%;padding-block:0;line-height:44px;display:block}.location-schedule-time-grid .location-time-input[type=time]::-webkit-date-and-time-value{text-align:center;justify-content:center;align-items:center;height:44px;margin:0;padding:0;line-height:44px;display:flex}.location-auto-exit-fields .location-time-input[type=datetime-local]::-webkit-date-and-time-value{text-align:center;justify-content:center;align-items:center;height:44px;margin:0;padding:0;line-height:44px;display:flex}.location-note-textarea{box-sizing:border-box;resize:vertical;border:1px solid var(--app-line);inline-size:100%;width:100%;min-height:132px;color:var(--app-text);font:inherit;background:#ffffffdb;border-radius:16px;padding:13px 14px;font-size:.92rem;line-height:1.65}.location-time-input:focus,.location-note-textarea:focus{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.location-weekday-options{flex-wrap:wrap;gap:8px;min-width:0;display:flex}.location-weekday-option{border:1px solid var(--app-line);min-width:42px;min-height:38px;color:var(--app-muted);background:#ffffffd6;border-radius:999px;flex:1 0 42px;justify-content:center;align-items:center;font-weight:900;display:inline-flex}.location-weekday-option input{opacity:0;pointer-events:none;position:absolute}.location-weekday-option.is-active{color:var(--app-brand);background:var(--app-brand-soft);border-color:var(--app-brand-border)}.location-visibility-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.location-visibility-option{background:var(--app-surface-strong);border:1px solid var(--app-line);min-height:48px;color:var(--app-muted);border-radius:16px;justify-content:center;align-items:center;gap:7px;padding:10px 12px;font-size:.9rem;font-weight:900;display:inline-flex}.location-visibility-option input{opacity:0;pointer-events:none;position:absolute}.location-visibility-option .material-symbols-outlined{font-size:1.1rem}.location-visibility-option.is-active,.location-visibility-option:has(input:checked){background:var(--app-brand-soft);border-color:var(--app-brand-border);color:var(--app-brand)}.location-visibility-option:has(input:focus-visible){border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring)}.location-auto-exit-options{grid-template-columns:repeat(3,minmax(0,1fr))}.location-auto-exit-fields{gap:8px;min-width:0;display:grid}.location-auto-exit-summary{background:var(--app-brand-soft);min-height:34px;color:var(--app-brand);border-radius:14px;align-items:center;gap:6px;margin:0;padding:8px 10px;font-size:.84rem;font-weight:900;display:inline-flex}.location-auto-exit-summary .material-symbols-outlined{color:currentColor;font-size:1rem}.location-autosave-status{color:#207a52;justify-content:flex-end;align-items:center;gap:6px;min-height:34px;margin:-4px 0 0;font-size:.84rem;font-weight:900;display:inline-flex}.location-autosave-status .material-symbols-outlined{font-size:1rem;line-height:1}.location-autosave-status.is-saving{color:var(--app-muted)}.location-autosave-status.is-error{color:#b42318}.location-action-secondary{background:var(--app-surface-strong);color:var(--app-text);border:1px solid var(--app-line);box-shadow:none}.location-modal-cancel-entry{color:#b42318;border-color:#b4231838}.app-modal-backdrop{z-index:60;min-height:100dvh;padding:18px 16px calc(18px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111f306b;align-items:end;display:grid;position:fixed;inset:0;overflow:hidden}.app-modal{width:min(100%,520px);max-height:calc(100dvh - 36px - env(safe-area-inset-bottom));background:var(--app-surface);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scroll-padding-bottom:calc(20px + env(safe-area-inset-bottom));border:1px solid #ffffffe6;border-radius:24px 24px 18px 18px;gap:16px;margin:0 auto;padding:18px;display:grid;overflow-y:auto;box-shadow:0 24px 60px #132e5038}.app-modal form{min-width:0}.app-modal-scroll{max-height:calc(100vh - 48px - env(safe-area-inset-bottom));overflow:hidden}.app-modal-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.app-modal-title{color:var(--app-text);margin:4px 0 0;font-size:1.18rem;font-weight:900;line-height:1.25}.app-modal-close{background:var(--app-surface-strong);width:40px;height:40px;color:var(--app-muted);border:1px solid var(--app-line);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.app-modal-actions{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:10px;display:grid}.app-modal-submit{border-radius:16px;min-height:50px;padding:12px 14px}.app-modal-danger-submit{background:linear-gradient(135deg,#b42318 0%,#7f171e 100%);box-shadow:0 18px 36px #b4231833}.app-ad-slot{width:min(100%,720px);max-width:100%;color:var(--app-muted);text-align:center;justify-items:center;gap:7px;margin:24px auto 2px;display:grid}.app-ad-slot-modal{width:100%;margin:18px auto 12px}.app-ad-label{color:var(--app-muted);letter-spacing:.08em;font-size:.68rem;font-weight:900;line-height:1}.app-ad-content{text-align:center;max-width:100%;overflow:hidden}.app-ad-content>*{max-width:100%}.pwa-install-backdrop{z-index:80}.pwa-install-modal{gap:14px}.pwa-install-state,.pwa-install-guide{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);border-radius:18px;gap:12px;padding:14px;display:grid}.pwa-install-state{grid-template-columns:34px minmax(0,1fr);align-items:start}.pwa-install-state>.material-symbols-outlined,.pwa-install-guide-heading>.material-symbols-outlined{color:var(--app-brand);font-size:1.7rem}.pwa-install-state h3,.pwa-install-guide h3{color:var(--app-text);margin:0;font-size:1rem;font-weight:900;line-height:1.3}.pwa-install-state p,.pwa-install-guide p{color:var(--app-muted);margin:4px 0 0;font-size:.88rem;font-weight:700;line-height:1.55}.pwa-install-guide-heading{grid-template-columns:34px minmax(0,1fr);align-items:start;gap:10px;display:grid}.pwa-install-steps{counter-reset:pwa-install-step;gap:8px;margin:0;padding:0;display:grid}.pwa-install-steps li{min-height:36px;color:var(--app-text);counter-increment:pwa-install-step;background:#ffffffb8;border:1px solid #ffffffd6;border-radius:14px;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:8px;padding:8px 10px;font-size:.86rem;font-weight:800;line-height:1.45;list-style:none;display:grid}.pwa-install-steps li:before{background:var(--app-surface-strong);width:26px;height:26px;color:var(--app-brand);content:counter(pwa-install-step);border-radius:999px;justify-content:center;align-items:center;font-size:.78rem;font-weight:900;display:inline-flex}.pwa-install-status{color:var(--app-muted);margin:0;font-size:.86rem;font-weight:800;line-height:1.5}.pwa-install-actions{align-items:stretch}.notification-settings-backdrop{z-index:82}.notification-settings-modal{gap:14px}.notification-settings-state{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);border-radius:18px;grid-template-columns:34px minmax(0,1fr);align-items:start;gap:10px;padding:14px;display:grid}.notification-settings-state>.material-symbols-outlined{color:var(--app-brand);font-size:1.7rem}.notification-settings-state h3,.notification-settings-state p{margin:0}.notification-settings-state h3{color:var(--app-text);font-size:1rem;font-weight:900;line-height:1.35}.notification-settings-state p{color:var(--app-muted);margin-top:4px;font-size:.88rem;font-weight:700;line-height:1.55}.notification-settings-form,.notification-settings-group,.notification-settings-install-actions{gap:10px;display:grid}.notification-settings-install-actions{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:stretch}.notification-settings-group{padding-top:2px}.notification-settings-actions{align-items:stretch;margin-top:2px}.chat-card{background:var(--app-surface);border-radius:var(--app-radius-lg);box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #ffffffe6}.chat-app-shell{box-sizing:border-box;grid-template-rows:auto minmax(0,1fr);max-width:1120px;height:100dvh;min-height:0;display:grid;overflow:hidden}.chat-app-shell .app-avatar{background:var(--app-brand-soft);color:var(--app-brand);border:1px solid var(--app-brand-border)}.chat-app-shell .app-brand-icon .material-symbols-outlined{color:var(--app-brand)}.chat-overview-card{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0;padding:0;display:grid;overflow:hidden}.chat-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chat-heading-row{border-bottom:1px solid var(--app-line);justify-content:space-between;align-items:center;gap:12px;padding:16px 18px 14px;display:flex}.chat-heading-actions{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:inline-flex}.chat-title{color:var(--app-text);margin:0;font-size:1.36rem;font-weight:900}.chat-count-badge,.chat-unread-badge{background:var(--app-university-accent);color:var(--app-surface-strong);white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;font-size:.78rem;font-weight:900;display:inline-flex}.chat-count-badge{background:var(--app-brand-soft);min-height:34px;color:var(--app-brand);border-color:var(--app-brand-border);padding:6px 10px}.chat-layout{grid-template-columns:minmax(220px,.9fr) minmax(0,1.4fr);gap:0;min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.chat-layout.is-loading .chat-room,.chat-layout.is-loading .chat-sidebar{opacity:.72;pointer-events:none}.chat-sidebar,.chat-room{min-width:0}.chat-sidebar{border-right:1px solid var(--app-line);overscroll-behavior:contain;scrollbar-gutter:stable;background:#f8fbffa3;align-content:start;gap:8px;min-height:0;max-height:none;padding:12px 0 16px;display:grid;overflow:hidden auto}.chat-sidebar-section{gap:6px;display:grid}.chat-section-title{color:var(--app-muted);letter-spacing:0;margin:8px 18px 4px;font-size:.75rem;font-weight:900}.chat-section-heading{justify-content:space-between;align-items:center;gap:8px;padding:0 12px 0 0;display:flex}.chat-section-heading .chat-section-title{margin-right:0}.chat-thread-list{gap:0;display:grid}.chat-thread-divider{background:var(--app-line);height:1px;margin:0 14px 0 76px}.chat-thread{isolation:isolate;min-width:0;min-height:72px;color:inherit;background:0 0;border:0;border-radius:0;align-items:center;gap:12px;padding:10px 14px 10px 18px;text-decoration:none;transition:background-color .18s ease-out,box-shadow .18s ease-out;display:flex;position:relative}.chat-thread+.chat-thread{border-top:0}.chat-thread>*{z-index:1;position:relative}.chat-thread:hover,.chat-thread:focus-visible{background:#ffffffb3;outline:none}.chat-thread:focus-visible{box-shadow:inset 0 0 0 3px var(--app-brand-ring)}.chat-thread.is-active{background:var(--app-brand-soft);box-shadow:inset 0 0 0 1px var(--app-brand-border)}.chat-thread.is-active:focus-visible{box-shadow:inset 0 0 0 1px var(--app-brand-border), inset 0 0 0 4px var(--app-brand-ring)}.chat-thread.is-active:hover,.chat-thread.is-active:focus-visible{background:var(--app-brand-soft)}.chat-thread.has-unread .friend-list-title{font-weight:900}.chat-thread-avatar{border-radius:50%;width:46px;height:46px}.chat-thread-copy{flex:auto;min-width:0}.chat-thread-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.chat-thread-time{color:var(--app-muted);flex:none;font-size:.72rem;font-weight:800}.chat-thread-preview-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;display:grid}.chat-thread-preview-row .friend-list-meta{margin-top:3px}.chat-unread-badge{min-width:22px;min-height:22px;box-shadow:0 6px 16px var(--app-brand-shadow);padding:2px 7px}.chat-room{background:#f8fbff;border:0;border-radius:0;grid-template-rows:auto minmax(0,1fr) auto;width:100%;min-width:0;height:100%;min-height:0;max-height:none;display:grid;overflow:hidden}.chat-room-header{border-bottom:1px solid var(--app-line);background:#ffffffb8;grid-template-columns:minmax(70px,1fr) auto minmax(70px,1fr);align-items:center;gap:8px;min-height:74px;padding:10px 14px;display:grid}.chat-back-link{min-height:44px;color:var(--app-brand);grid-column:1;justify-self:start;align-items:center;gap:0;font-size:.86rem;font-weight:900;text-decoration:none;transition:box-shadow .18s ease-out,filter .18s ease-out,transform .18s ease-out;display:none}.chat-back-link .material-symbols-outlined{font-size:1.35rem}.chat-room-heading{grid-column:2;justify-items:center;gap:3px;min-width:0;display:grid}.chat-room-avatar{border-radius:50%;width:34px;height:34px;font-size:.78rem}.chat-room-spacer{grid-column:3;display:block}.chat-room-title{max-width:20ch;color:var(--app-text);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.92rem;font-weight:900;overflow:hidden}.chat-message-list{box-sizing:border-box;overscroll-behavior:contain;scrollbar-gutter:stable;align-content:end;gap:7px;width:100%;min-width:0;min-height:0;padding:18px 12px;display:grid;overflow:hidden auto}.chat-message-list:has(>.chat-empty-room){align-content:stretch}.chat-message{justify-content:flex-start;display:flex}.chat-date-separator{color:var(--app-muted);grid-template-columns:minmax(20px,1fr) auto minmax(20px,1fr);align-items:center;gap:9px;margin:8px 0 4px;font-size:.74rem;font-weight:900;display:grid}.chat-date-separator:before,.chat-date-separator:after{content:"";background:var(--app-line);height:1px}.chat-date-separator span{white-space:nowrap;min-width:0}.chat-message.is-mine{justify-content:flex-end}.chat-message-bubble{background:var(--app-surface-strong);border:1px solid #dfe7f1eb;border-radius:18px;max-width:min(78%,430px);padding:8px 12px 7px;box-shadow:0 1px 2px #132e5014}.chat-message.is-mine .chat-message-bubble{background:var(--app-university-accent);border-color:var(--app-university-accent);color:var(--app-surface-strong);box-shadow:0 8px 18px var(--app-brand-shadow)}.chat-message-sender,.chat-message-body,.chat-message-time{margin:0}.chat-message-sender{color:var(--app-brand);font-size:.76rem;font-weight:900}.chat-message-body{color:var(--app-text);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:1px;font-size:.95rem;font-weight:600;line-height:1.45}.chat-message.is-mine .chat-message-body,.chat-message.is-mine .chat-message-time{color:var(--app-surface-strong)}.chat-message-time{color:var(--app-muted);text-align:right;opacity:.82;margin-top:3px;font-size:.72rem;font-weight:700;display:block}.chat-compose{box-sizing:border-box;width:100%;min-width:0;max-width:100%;padding:10px 10px max(10px, env(safe-area-inset-bottom));border-top:1px solid var(--app-line);background:#ffffffc7;grid-template-columns:minmax(0,1fr) 44px;align-items:end;gap:8px;display:grid}.chat-compose-input,.chat-input{background:var(--app-surface-strong);border:1px solid var(--app-line-strong);width:100%;min-width:0;max-width:100%;color:var(--app-text);font:inherit;border-radius:999px}.chat-compose-input{resize:none;scrollbar-width:thin;border-radius:22px;grid-column:1;height:44px;min-height:44px;max-height:118px;padding:9px 14px;font-size:.98rem;line-height:1.45;overflow-y:hidden}.chat-input{min-height:42px;padding:9px 13px;font-size:1rem}.chat-compose-input:focus,.chat-input:focus{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.chat-send-button,.chat-secondary-button,.chat-action-button,.chat-room-icon-button,.chat-direct-button{cursor:pointer;border:0;justify-content:center;align-items:center;font-weight:900;transition:box-shadow .18s ease-out,filter .18s ease-out,transform .18s ease-out;display:inline-flex}.chat-send-button{background:var(--app-university-accent);width:44px;min-width:44px;height:44px;color:var(--app-surface-strong);box-shadow:0 10px 18px var(--app-brand-shadow);border-radius:50%;grid-column:2;justify-self:end}.chat-send-button:hover,.chat-send-button:focus-visible,.chat-secondary-button:hover,.chat-secondary-button:focus-visible,.chat-action-button:hover,.chat-action-button:focus-visible,.chat-room-icon-button:hover,.chat-room-icon-button:focus-visible,.chat-direct-button:hover,.chat-direct-button:focus-visible,.chat-group-summary:hover,.chat-group-summary:focus-visible,.chat-back-link:hover,.chat-back-link:focus-visible{filter:brightness(.98);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.chat-send-button:active,.chat-secondary-button:active,.chat-action-button:active,.chat-room-icon-button:active,.chat-direct-button:active,.chat-group-summary:active,.chat-back-link:active{transform:translateY(1px)}.chat-action-button,.chat-room-icon-button{min-width:44px;height:44px;color:var(--app-brand);background:var(--app-brand-soft);border:1px solid var(--app-brand-border);border-radius:50%}.chat-new-button{background:var(--app-university-accent);width:auto;color:var(--app-surface-strong);box-shadow:0 12px 24px var(--app-brand-shadow);border-color:#0000;border-radius:999px;gap:7px;padding:0 14px}.chat-new-button .material-symbols-outlined{font-size:1.15rem}.chat-new-button-label{font-size:.84rem;font-weight:900;line-height:1}.chat-room-icon-button{grid-column:3;justify-self:end}.chat-secondary-button{background:var(--app-brand-soft);min-height:44px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:999px;gap:6px}.chat-secondary-button:disabled,.chat-modal-form .app-modal-submit:disabled{cursor:not-allowed;filter:grayscale(.12);opacity:.58;box-shadow:none}.chat-group-details{position:relative}.chat-group-summary{width:44px;height:44px;color:var(--app-brand);background:var(--app-brand-soft);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;list-style:none;transition:box-shadow .18s ease-out,filter .18s ease-out,transform .18s ease-out;display:inline-flex}.chat-group-summary::-webkit-details-marker{display:none}.chat-group-summary .material-symbols-outlined{font-size:1.15rem}.chat-group-form{background:var(--app-surface-strong);border:1px solid var(--app-line);border-radius:18px;gap:8px;width:min(310px,100vw - 54px);padding:10px;display:grid;box-shadow:0 18px 42px #132e5024}.chat-group-details .chat-group-form{z-index:4;position:absolute;top:calc(100% + 8px);right:0}.chat-group-members{gap:6px;max-height:108px;display:grid;overflow:auto}.chat-member-option{min-height:40px;color:var(--app-text);align-items:center;gap:8px;font-size:.84rem;font-weight:800;display:flex}.chat-member-option input:focus-visible{outline:3px solid var(--app-brand-ring);outline-offset:2px}.chat-start-modal{width:min(100%,580px)}.chat-modal-form{width:100%;box-shadow:none;background:0 0;border:0;border-radius:0;gap:12px;padding:0;display:grid}.chat-search-field{min-width:0;position:relative}.chat-search-field .material-symbols-outlined{color:var(--app-muted);pointer-events:none;font-size:1.18rem;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.chat-search-field .chat-input{padding-left:42px}.chat-modal-friend-list{overscroll-behavior:contain;gap:6px;max-height:min(42dvh,360px);padding:2px;display:grid;overflow:auto}.chat-modal-friend{border:1px solid var(--app-line);background:#ffffffad;border-radius:16px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;min-height:58px;padding:7px 8px;display:grid}.chat-modal-member-option{gap:10px;min-width:0;min-height:0}.chat-modal-member-option .friend-list-title,.chat-modal-member-option .friend-list-meta{display:block}.chat-direct-button{background:var(--app-brand-soft);width:42px;min-width:42px;height:42px;min-height:40px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:50%;padding:0;font-size:.82rem;font-weight:900;text-decoration:none}.chat-direct-button .material-symbols-outlined{font-size:1.2rem}.chat-modal-group-fields{border:1px solid var(--app-line);background:#ffffffb8;border-radius:18px;gap:10px;padding:12px;display:grid}.chat-modal-section-heading{color:var(--app-brand);align-items:center;gap:8px;display:flex}.chat-modal-section-heading .material-symbols-outlined{font-size:1.1rem}.chat-modal-section-heading h4{margin:0;font-size:.9rem;font-weight:900}.chat-field{gap:6px;min-width:0;display:grid}.chat-field-label{color:var(--app-muted);font-size:.78rem;font-weight:900}.chat-file-input{background:var(--app-surface-strong);border:1px solid var(--app-line-strong);width:100%;min-width:0;min-height:44px;color:var(--app-text);font:inherit;border-radius:16px;padding:8px;font-size:.88rem;font-weight:800}.chat-file-input::file-selector-button{background:var(--app-brand-soft);color:var(--app-brand);font:inherit;cursor:pointer;border:0;border-radius:12px;margin-right:12px;padding:9px 12px;font-weight:900}.chat-file-input:focus{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.chat-group-edit-preview{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);border-radius:16px;align-items:center;gap:12px;min-width:0;padding:10px;display:flex}.chat-group-edit-icon{background:var(--app-surface-strong);border-radius:50%;width:54px;height:54px}.chat-empty-room{text-align:center;align-content:center;place-items:center;gap:8px;min-height:260px;padding:24px;display:grid}.chat-message-list>.chat-empty-room{min-height:100%}.chat-empty-room .material-symbols-outlined{background:var(--app-brand-soft);width:48px;height:48px;color:var(--app-brand);border-radius:16px;justify-content:center;align-items:center;font-size:1.6rem;display:inline-flex}@media (prefers-reduced-motion:reduce){.chat-thread,.chat-send-button,.chat-secondary-button,.chat-group-summary,.chat-back-link{transition:none}}.timetable-card{border-radius:var(--app-radius-xl);padding:18px}.timetable-board-card{overflow:hidden}.timetable-overview{gap:16px;display:grid}.timetable-title,.timetable-section-title{color:var(--app-text);margin:4px 0 0;font-weight:900}.timetable-title{font-size:1.45rem}.timetable-section-title{font-size:1.08rem}.timetable-meta{color:var(--app-muted);margin:6px 0 0;font-size:.88rem;line-height:1.6}.timetable-period-stack{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.timetable-period-chip{background:var(--app-brand-soft);min-width:0;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:14px;gap:2px;padding:10px 12px;font-size:.72rem;font-weight:800;display:grid}.timetable-period-chip strong{min-width:0;color:var(--app-text);white-space:nowrap;font-size:.82rem}.timetable-share-card{margin-top:14px}.timetable-visibility-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.timetable-period-schedule-option{text-align:left;justify-content:flex-start}.timetable-period-schedule-copy{gap:3px;min-width:0;display:grid}.timetable-period-schedule-copy strong{color:inherit;font-size:.9rem;line-height:1.25}.timetable-period-schedule-copy small{color:var(--app-muted);font-size:.76rem;font-weight:800;line-height:1.35}.timetable-period-schedule-option.is-active .timetable-period-schedule-copy small,.timetable-period-schedule-option:has(input:checked) .timetable-period-schedule-copy small{color:var(--app-brand)}.timetable-friend-heading{gap:6px;display:grid}.timetable-back-link{width:fit-content;color:var(--app-brand);align-items:center;gap:6px;font-size:.82rem;font-weight:900;text-decoration:none;display:inline-flex}.timetable-back-link .material-symbols-outlined{font-size:1.05rem}.timetable-heading-row{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.timetable-compact-title{min-width:max-content;margin:0}.timetable-export-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.timetable-export-button{background:var(--app-surface-strong);min-height:34px;color:var(--app-brand);border:1px solid var(--app-brand-border);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;gap:5px;padding:6px 10px;font-size:.76rem;font-weight:900;display:inline-flex;box-shadow:0 10px 20px #132e5014}.timetable-export-button .material-symbols-outlined{font-size:1rem}.timetable-edit-icon{background:var(--app-brand-soft);width:42px;height:42px;color:var(--app-brand);border-radius:15px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.45rem;display:inline-flex}.timetable-form{gap:14px;display:grid}.timetable-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.timetable-room-summary-button{border:1px solid var(--app-line);width:100%;min-height:58px;color:var(--app-text);text-align:left;cursor:pointer;background:#ffffffdb;border-radius:16px;grid-template-columns:24px minmax(0,1fr) 24px;align-items:center;gap:10px;padding:10px 12px;display:grid}.timetable-room-summary-button .material-symbols-outlined{color:var(--app-brand);font-size:1.2rem}.timetable-room-summary-copy{gap:2px;min-width:0;display:grid}.timetable-room-summary-label{color:var(--app-text);overflow-wrap:anywhere;font-size:.88rem;font-weight:900}.timetable-room-summary-meta{color:var(--app-muted);font-size:.74rem;font-weight:800}.timetable-room-selector-page{gap:14px;min-width:0;display:grid}.timetable-room-selector-toolbar{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.timetable-room-selector-toolbar .location-note-target{justify-content:flex-start;min-width:0}.timetable-room-selector-toolbar .location-note-target span:last-child{overflow-wrap:anywhere;min-width:0}.timetable-room-back-button{border:1px solid var(--app-line);min-height:42px;color:var(--app-text);background:#ffffffd6;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:9px 13px;font-weight:900;display:inline-flex}.timetable-room-back-button .material-symbols-outlined{font-size:1.08rem}.timetable-room-selector-body,.timetable-room-selector-section{gap:12px;min-width:0;display:grid}.timetable-field{color:var(--app-text);gap:7px;font-size:.82rem;font-weight:800;display:grid}.timetable-color-field{border:0;margin:0;padding:0}.timetable-color-field legend{padding:0}.timetable-color-options{flex-wrap:wrap;gap:8px;display:flex}.timetable-color-option{min-width:0}.timetable-color-option input{opacity:0;pointer-events:none;position:absolute}.timetable-color-swatch{border:1px solid var(--app-line);min-height:38px;color:var(--app-text);cursor:pointer;background:#ffffffd1;border-radius:999px;align-items:center;gap:7px;padding:8px 11px;font-size:.78rem;font-weight:900;display:inline-flex}.timetable-color-swatch:before{content:"";background:var(--swatch-color);border-radius:999px;flex-shrink:0;width:14px;height:14px;box-shadow:0 0 0 3px #ffffffe0}.timetable-color-option input:checked+.timetable-color-swatch{border-color:var(--swatch-color);box-shadow:0 0 0 3px color-mix(in srgb, var(--swatch-color) 18%, transparent)}.timetable-input,.timetable-textarea{box-sizing:border-box;border:1px solid var(--app-line);inline-size:100%;width:100%;color:var(--app-text);font:inherit;background:#ffffffd6;border-radius:15px;font-weight:700}.timetable-input{min-width:0;max-width:100%;min-height:48px;padding:0 14px}.timetable-export-modal .timetable-input[type=date],.timetable-input[type=time]{appearance:none;box-sizing:border-box;text-align:center;height:48px;justify-self:stretch;inline-size:100%;min-inline-size:0;max-inline-size:100%;padding-block:0;line-height:46px;display:block}.timetable-export-modal .timetable-input[type=date]::-webkit-date-and-time-value{text-align:center;justify-content:center;align-items:center;height:46px;margin:0;padding:0;line-height:46px;display:flex}.timetable-input[type=time]::-webkit-date-and-time-value{text-align:center;justify-content:center;align-items:center;height:46px;margin:0;padding:0;line-height:46px;display:flex}.timetable-textarea{resize:vertical;min-height:112px;padding:12px 14px}.timetable-input:focus,.timetable-textarea:focus{border-color:var(--app-university-accent);box-shadow:0 0 0 4px var(--app-brand-ring);outline:none}.timetable-error{color:#b91c1c;font-size:.78rem}.timetable-actions{grid-template-columns:1fr auto;gap:10px;display:grid}.timetable-submit-button,.timetable-delete-button{border-radius:16px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:12px 16px;font-weight:900;display:inline-flex}.timetable-submit-button{background:linear-gradient(135deg, var(--app-university-accent) 0%, var(--app-brand-strong) 100%);color:#fff;box-shadow:0 14px 28px var(--app-brand-shadow)}.timetable-delete-button{color:#b91c1c;background:#ffffffd1;border:1px solid #f871716b}.timetable-calendar-note{background:var(--app-brand-soft);border:1px solid var(--app-brand-border);color:var(--app-text);border-radius:16px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.timetable-calendar-note .material-symbols-outlined{color:var(--app-brand);flex-shrink:0;font-size:1.2rem}.timetable-calendar-note p{color:var(--app-muted);margin:0;font-size:.84rem;font-weight:700;line-height:1.6}.timetable-scroll{-webkit-overflow-scrolling:touch;margin-inline:-6px;padding:2px 6px 4px;overflow-x:auto}.timetable-grid{grid-template-columns:112px repeat(6,minmax(104px,1fr));gap:8px;min-width:780px;display:grid}.timetable-grid-head,.timetable-period-cell,.timetable-cell{border:1px solid var(--app-line);border-radius:14px}.timetable-grid-head{background:var(--app-brand-soft);min-height:40px;color:var(--app-brand);place-items:center;font-size:.78rem;font-weight:900;display:grid}.timetable-period-cell{min-height:80px;color:var(--app-text);background:#ffffffc2;align-content:center;gap:3px;padding:9px;display:grid}.timetable-period-cell strong{font-size:.82rem}.timetable-period-cell span{color:var(--app-muted);font-size:.69rem;font-weight:800;line-height:1.35}.timetable-cell{min-height:80px;color:var(--app-text);font:inherit;text-align:left;cursor:pointer;background:#ffffffad;align-content:start;gap:3px;padding:9px;display:grid}.timetable-cell:hover,.timetable-cell:focus-visible{border-color:var(--app-university-accent);box-shadow:0 0 0 3px var(--app-brand-ring);outline:none}.timetable-cell.has-entry{border-color:color-mix(in srgb, var(--entry-color) 42%, var(--app-line));box-shadow:inset 5px 0 0 var(--entry-color), 0 10px 18px #132e5014;background:#fff}.timetable-cell.is-selected{border-color:var(--app-university-accent);box-shadow:0 0 0 3px var(--app-brand-ring)}.timetable-cell-readonly{cursor:default}.timetable-cell-readonly:hover,.timetable-cell-readonly:focus-visible{border-color:var(--app-line);box-shadow:none}.timetable-cell strong{min-width:0;color:var(--app-text);overflow-wrap:anywhere;font-size:.8rem;line-height:1.35}.timetable-entry-type{background:color-mix(in srgb, var(--entry-color) 14%, #fff);width:fit-content;color:var(--entry-color);border:1px solid color-mix(in srgb, var(--entry-color) 36%, #fff);border-radius:999px;align-items:center;padding:3px 7px;font-weight:900;display:inline-flex;font-size:.68rem!important}.timetable-cell span{min-width:0;color:var(--app-muted);overflow-wrap:anywhere;font-size:.72rem;line-height:1.35}.timetable-cell-meta{align-items:baseline;gap:3px;display:flex}.timetable-cell-label{flex-shrink:0;font-weight:900;color:var(--app-brand)!important;font-size:.66rem!important}.timetable-empty{color:#9aa8b7;place-self:center;font-weight:800}.timetable-editor-modal,.timetable-export-modal{max-height:calc(100dvh - 32px - env(safe-area-inset-bottom));overflow-y:auto}.timetable-export-preview{border:1px solid var(--app-line);background:#f8fbff;border-radius:18px;overflow:auto}.timetable-export-preview img{width:100%;min-width:760px;height:auto;display:block}.app-tabbar{width:100%;padding:12px 16px calc(18px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffeb;border-top:1px solid #dbe4efe6;border-radius:16px 16px 0 0;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 30px #132e5014}.app-tab{box-sizing:border-box;color:#8a99a9;background:0 0;border-radius:18px;grid-template-rows:24px auto;align-content:center;justify-items:center;gap:4px;min-width:0;min-height:64px;padding:10px 6px;font-size:.72rem;font-weight:700;text-decoration:none;display:grid}.app-tab .material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 500, "GRAD" 0, "opsz" 24;justify-content:center;align-items:center;width:24px;height:24px;font-size:1.45rem;line-height:1;display:inline-flex}.app-tab-icon-wrap{justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex;position:relative}.app-tab-badge{color:#fff;background:#ef4444;border:2px solid #fffffff2;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.62rem;font-weight:900;line-height:1;display:inline-flex;position:absolute;top:-7px;right:-9px}.app-tab-icon-map{transform:translate(-1.5px)}.app-tab span:not(.material-symbols-outlined){white-space:nowrap;min-width:0;line-height:1.25}.app-tab.is-active{background:var(--app-brand-soft);color:var(--app-brand)}@media (min-width:760px){.app-shell{padding-top:24px;padding-bottom:118px}.app-topbar{margin-bottom:22px;padding-inline:4px}.location-main,.friend-main,.chat-main,.timetable-main,.account-main,.admin-main{gap:20px}.location-status-card{padding:24px}.location-history,.location-quick-access-card,.location-recurring-card,.location-select-card,.admin-card,.account-card,.friend-card{padding:22px}.friend-collapsible-card:not([open]){padding-bottom:17px}.location-building-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.location-scroll-list{min-height:0;max-height:min(42vh,420px)}.app-tabbar{border:1px solid #dbe4efeb;border-radius:24px;width:min(680px,100% - 48px);padding:10px;bottom:18px;left:50%;right:auto;transform:translate(-50%)}.app-tab{border-radius:18px;min-height:58px}}@media (min-width:1040px){.app-shell{padding-bottom:128px}.location-main{grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr);grid-template-areas:"status status""quick quick""select recurring";align-items:start}.location-main:has(>.app-messages){grid-template-areas:"messages messages""status status""quick quick""select recurring"}.location-main>.app-messages{grid-area:messages}.location-status-card{grid-area:status}.location-quick-access-card{grid-area:quick}.location-select-card{grid-area:select}.location-recurring-card{grid-area:recurring}.location-status-header{align-items:center}.location-status-actions{flex-direction:row}.location-building-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.location-split-grid{grid-template-columns:minmax(160px,.72fr) minmax(0,1.28fr)}.location-quick-list{max-height:220px}}@media (max-width:760px){html:has(.chat-app-shell),body:has(.chat-app-shell){width:100%;max-width:100%;overflow:hidden}body:has(.chat-app-shell){overscroll-behavior:none}.chat-app-shell .app-topbar{display:none}.chat-app-shell{--chat-mobile-tabbar-height:calc(82px + env(safe-area-inset-bottom));width:100%;max-width:100vw;min-height:100dvh;padding:0 0 var(--chat-mobile-tabbar-height);overflow:hidden}.chat-app-shell .chat-main{gap:0;width:100%;min-width:0;max-width:100vw;overflow:hidden}.chat-app-shell .chat-overview-card{inset:0 0 var(--chat-mobile-tabbar-height);z-index:20;width:100%;max-width:100vw;min-height:0;height:calc(100dvh - var(--chat-mobile-tabbar-height));box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border:0;border-radius:0;grid-template-rows:auto minmax(0,1fr);display:grid;position:fixed}.chat-app-shell .app-tabbar{height:var(--chat-mobile-tabbar-height);padding:8px 8px max(10px, env(safe-area-inset-bottom));box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0;align-items:stretch}.chat-app-shell.has-active-chat .chat-heading-row{display:none}.chat-app-shell.has-active-chat .chat-overview-card{grid-template-rows:minmax(0,1fr)}.chat-app-shell.has-active-chat .chat-layout{height:100%;min-height:0}.chat-app-shell .chat-layout{width:100%;max-width:100vw;min-height:0;overflow:hidden}.landing-hero{min-height:86vh}.landing-hero-image{object-position:62% top}.landing-hero-shade{background:linear-gradient(90deg,#0f172ad1 0%,#0f172aa8 58%,#0f172a38 100%),linear-gradient(#0f172a00 46%,#0f172a94 100%)}.landing-guide,.landing-safety{grid-template-columns:1fr}.landing-guide-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.landing-guide-tabs button{text-align:center;font-size:.82rem}.analytics-campaign-create-grid,.analytics-campaign-filter-grid,.analytics-campaign-item{grid-template-columns:minmax(0,1fr)}.analytics-campaign-item{align-items:stretch}.analytics-campaign-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.chat-layout{grid-template-columns:1fr;gap:0;min-width:0}.chat-layout.has-active-chat .chat-sidebar,.chat-layout:not(.has-active-chat) .chat-room{display:none}.chat-sidebar{border-right:0;min-height:0;overflow:auto}.chat-back-link{display:inline-flex}.chat-room{background:#f8fbff;width:100%;min-width:0;max-width:100vw;height:100%;min-height:0;max-height:none}.chat-room-header{background:#fffffff5}.chat-room-header .friend-list-icon{background:var(--app-brand-soft);color:var(--app-brand)}.chat-room .chat-message-list{min-height:0}.chat-room .chat-message-list>.chat-empty-room{min-height:100%}.chat-message-bubble{max-width:86%}.app-tabbar{gap:4px;padding-inline:8px}.app-tab{border-radius:15px;min-height:60px;padding-inline:3px;font-size:.68rem}}@media (max-width:560px){.location-schedule-time-grid{grid-template-columns:minmax(0,1fr);gap:12px;width:100%;display:grid}.app-modal-backdrop{padding:12px 10px max(12px, env(safe-area-inset-bottom))}.app-modal{max-height:calc(100dvh - 24px - env(safe-area-inset-bottom));border-radius:22px 22px 16px 16px;gap:13px;padding:14px}.app-modal .location-note-update-form{gap:12px}.app-modal .location-auto-exit-options{grid-template-columns:minmax(0,1fr)}.app-modal .location-note-textarea{min-height:104px}.location-building-scroll-list{overscroll-behavior:contain;border:1px solid var(--app-line);scrollbar-width:thin;-webkit-overflow-scrolling:touch;background:#ffffffb8;border-radius:18px;grid-template-columns:1fr;max-height:min(42vh,360px);padding:8px;overflow-y:auto}.app-modal .app-modal-actions{gap:8px}}@media (max-width:480px){.landing-nav{align-items:flex-start}.landing-logo span:last-child{display:none}.landing-hero{min-height:90vh;padding:18px}.landing-hero-content{gap:14px}.landing-hero h1{max-width:10ch}.landing-hero-actions,.landing-final .landing-hero-actions{flex-direction:column;width:100%}.landing-primary-link,.landing-secondary-link{width:100%}.analytics-campaign-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.landing-section{width:min(100% - 24px,1120px)}.landing-feature-card{min-height:150px}.landing-guide-tabs{grid-template-columns:1fr}.app-shell{padding-inline:12px}.location-status-header{flex-direction:column;align-items:stretch}.location-status-actions{flex-direction:row}.location-status-actions form,.location-status-actions button{flex:1 1 0}.friend-location-action{width:100%}.location-building-grid,.location-custom-place-actions,.location-quick-access-grid,.location-schedule-time-grid,.location-split-grid{grid-template-columns:1fr}.location-search-result-label,.location-search-result-meta,.location-quick-entry-button .location-history-title,.location-quick-entry-button .location-history-meta{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;overflow:visible}.location-room-button{align-items:flex-start}.location-room-button>span:first-child{white-space:normal;overflow-wrap:anywhere;min-width:0;line-height:1.45}.chat-layout{padding-top:0}.chat-room{border-radius:0;height:100%;min-height:0;max-height:none}.chat-overview-card{padding:0}.chat-heading-row{align-items:center;padding:14px 14px 12px}.chat-heading-actions{gap:6px}.chat-count-badge{min-height:30px;padding-inline:9px;font-size:.72rem}.chat-action-button{width:40px;min-width:40px;height:40px}.chat-new-button{width:auto;min-width:40px;padding-inline:12px}.chat-new-button-label{display:none}.chat-sidebar{gap:8px;padding-bottom:10px}.chat-sidebar-section{gap:8px}.chat-thread{min-height:70px;padding:10px 12px 10px 14px}.chat-message-bubble{max-width:88%}.chat-room-header{min-height:68px;padding:9px 12px}.chat-message-list{gap:8px;padding:12px}.chat-message-body{font-size:.95rem}.chat-compose{padding:9px 9px max(9px, env(safe-area-inset-bottom));grid-template-columns:minmax(0,1fr) 44px;gap:8px}.chat-compose-input{min-height:44px;max-height:104px}.chat-send-button{width:44px;height:44px}.chat-group-form{padding:10px}.chat-modal-form{padding:0}.chat-group-members{max-height:148px}.chat-secondary-button{min-height:46px}.chat-start-modal{width:100%}.chat-modal-friend-list{max-height:34dvh}.chat-modal-friend{grid-template-columns:minmax(0,1fr) auto;padding:7px}.chat-direct-button{min-width:44px;padding:0}.friend-id-panel,.friend-card-heading-row,.friend-signup-invite-card{flex-direction:column;align-items:stretch}.friend-signup-invite-card{grid-template-columns:1fr}.friend-list-heading-row{flex-direction:row;align-items:center}.friend-heading-actions{flex-wrap:nowrap}.friend-heading-actions .friend-secondary-action{flex:0 auto;width:auto}.friend-search-toggle{flex:none}.friend-copy-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.friend-copy-button,.friend-signup-invite-button,.friend-secondary-action,.friend-mini-action{width:100%}.friend-user-id{letter-spacing:.02em;font-size:1.35rem}.friend-request-controls,.friend-search-controls,.friend-qr-scanner-manual,.friend-discovery-layout{grid-template-columns:1fr}.friend-privacy-actions .friend-secondary-action{width:100%}.friend-list-item,.friend-discovery-item,.friend-request-preview,.friend-location-heading{flex-wrap:wrap;justify-content:flex-start}.friend-request-actions,.friend-discovery-actions,.friend-request-badge{margin-left:54px}.friend-request-actions,.friend-discovery-actions{justify-content:flex-end;width:calc(100% - 54px)}.friend-list-item-stacked{flex-wrap:nowrap}.friend-list-item-stacked .friend-list-secondary{grid-template-columns:1fr;align-items:stretch;padding-left:0}.friend-list-item-stacked .friend-list-actions-scroll{width:100%;margin-left:0}.friend-list-item-stacked .friend-list-actions{justify-content:flex-start;gap:6px;width:100%;margin-left:0;display:flex;overflow-x:auto}.friend-list-item-stacked .friend-list-actions form{flex:none;min-width:0;display:flex}.friend-list-item-stacked .friend-mini-action{justify-content:center;gap:5px;width:auto;min-width:96px;padding-inline:8px;font-size:.78rem}.friend-list-item-stacked .friend-close-badge{width:fit-content}.friend-close-toolbar{flex-direction:column;align-items:stretch}.location-visibility-options,.timetable-visibility-options,.account-details div,.account-dev-controls,.account-form-grid,.account-icon-editor,.account-link-grid,.account-circle-controls,.admin-stat-grid,.admin-search-controls,.admin-user-card,.analytics-summary-grid,.analytics-chart-grid,.analytics-chart-grid-wide,.analytics-detail-grid,.analytics-user-filter-grid,.analytics-user-detail-filter-grid{grid-template-columns:1fr}.analytics-page-heading,.analytics-detail-heading{flex-direction:column;align-items:stretch}.analytics-heading-actions,.analytics-link-button{width:100%}.analytics-user-table-head{display:none}.analytics-user-row{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.analytics-user-identity{grid-column:1/-1}.analytics-user-cell small{display:block}.admin-user-menu-wrap{justify-self:end}.timetable-card{border-radius:22px;padding:12px}.timetable-heading-row{align-items:center;gap:8px;margin-bottom:8px}.timetable-export-actions{flex-wrap:nowrap;flex:auto;gap:6px;min-width:0}.timetable-export-button{border-radius:11px;flex:1 1 0;gap:4px;min-width:0;min-height:32px;padding:5px 7px;font-size:.68rem}.timetable-export-button .material-symbols-outlined{font-size:1rem}.timetable-period-stack,.timetable-form-grid,.timetable-actions{grid-template-columns:1fr}.timetable-grid{grid-template-columns:52px repeat(6,minmax(72px,1fr));gap:4px;min-width:520px}.timetable-grid-head,.timetable-period-cell,.timetable-cell{border-radius:12px}.timetable-grid-head{min-height:30px;font-size:.68rem}.timetable-period-cell,.timetable-cell{min-height:64px;padding:5px}.timetable-period-cell strong{font-size:.68rem}.timetable-period-cell span{font-size:.56rem;line-height:1.25}.timetable-entry-type{padding:2px 6px;font-size:.62rem!important}.timetable-cell strong{font-size:.76rem}.timetable-cell span{font-size:.68rem}.timetable-cell-label{font-size:.62rem!important}.timetable-delete-button,.timetable-room-back-button{width:100%}.timetable-room-selector-toolbar{grid-template-columns:1fr}.location-scroll-list{min-height:0;max-height:180px}.location-building-scroll-list{max-height:180px}.app-modal-actions{grid-template-columns:1fr}}@media (max-width:390px){.timetable-scroll{margin-inline:-4px;padding-inline:4px}.timetable-grid{grid-template-columns:46px repeat(6,minmax(68px,1fr));gap:4px;min-width:488px}.timetable-period-cell,.timetable-cell{min-height:60px;padding:4px}.timetable-period-cell strong{font-size:.64rem}.timetable-period-cell span{font-size:.52rem}.timetable-cell strong{font-size:.72rem}.timetable-cell span{font-size:.64rem}.friend-profile-summary-grid{grid-template-columns:1fr}.friend-profile-network-row{grid-template-columns:auto minmax(0,1fr)}.friend-profile-network-actions{grid-column:1/-1;justify-items:stretch}.friend-profile-network-actions .friend-discovery-action,.friend-profile-network-profile-action{justify-content:center;width:100%}.friend-profile-network-actions .friend-discovery-status{text-align:left;max-width:none}.friend-list-item-stacked .friend-action-label,.friend-list-item-stacked .friend-close-badge-label{display:none}.friend-list-item-stacked .friend-mini-action{min-width:42px;min-height:42px;padding:8px}.friend-list-item-stacked .friend-close-badge{justify-content:center;min-width:34px;padding-inline:7px}}