@import url('https://fonts.googleapis.com/css2?family=Kaisei+Opti:wght@400;700&family=Noto+Sans+JP:wght@400;600;700;900&family=Yuji+Syuku&display=swap');:root{--navy:#061426;--blue:#0b4f9c;--cyan:#3cc7ff;--paper:#f7f8f5;--ink:#071426;--line:#d8e1e8;--brush:'Yuji Syuku','Kaisei Opti',serif;--sans:'Noto Sans JP',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans)}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.topbar{position:fixed;z-index:50;top:0;left:0;width:100%;height:74px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,74px);background:rgba(4,15,29,.76);color:#fff;backdrop-filter:blur(18px);border-bottom:1px solid rgba(255,255,255,.12)}.mini-logo{display:flex;align-items:center;gap:12px;font-size:9px;font-weight:900;letter-spacing:.22em}.mini-logo img{width:58px;height:48px;object-fit:contain}.topbar nav{display:flex;gap:34px;font-size:11px;font-weight:700;letter-spacing:.08em}.topbar nav a:hover{color:var(--cyan)}.menu{display:none;background:none;border:0;color:#fff}.hero{position:relative;height:240svh;display:block;background:#020b17;color:#fff}.hero-stage{position:sticky;top:0;left:0;width:100%;height:100svh;overflow:hidden}#petal-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;will-change:transform;transition:transform .05s linear;z-index:0}.petal-field{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}.petal{position:absolute;top:-10%;display:block;background:radial-gradient(circle at 30% 30%,#ffe3ec,#ffb4cf 55%,#ff8fb3 100%);border-radius:50% 0 50% 50%;transform:rotate(20deg);animation:petal-fall calc(var(--petal-speed,1) * 1s) linear infinite}@keyframes petal-fall{0%{transform:translate(0,-10vh) rotate(0deg);opacity:0}8%{opacity:1}100%{transform:translate(var(--drift,80px),115vh) rotate(360deg);opacity:.2}}.hero-stage::after{content:"";position:absolute;inset:0;z-index:1;background:radial-gradient(circle at 50% 55%,rgba(5,54,107,.05),rgba(1,7,16,.82) 76%),linear-gradient(0deg,#020b17 0,transparent 34%);pointer-events:none}.hero-glow{position:absolute;top:30svh;left:50%;z-index:3;width:55vw;height:55vw;margin-left:-27.5vw;border-radius:50%;background:radial-gradient(circle,rgba(30,139,255,.27),transparent 67%);filter:blur(20px);animation:float 7s ease-in-out infinite;pointer-events:none}.hero-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:4;text-align:center;padding:100px 20px 50px;transition:opacity .1s linear,transform .1s linear}.frame-status{position:absolute;bottom:24px;left:0;width:100%;z-index:4;text-align:center;margin:0;font-size:10px;letter-spacing:.25em;color:#8fdcff}.eyebrow{font-size:9px;font-weight:900;letter-spacing:.28em;color:#8fdcff}.eyebrow.ink{color:#0b64ad}.main-logo{display:block;width:min(740px,84vw);height:min(52vh,520px);margin:-20px auto -35px;object-fit:contain;filter:drop-shadow(0 25px 50px rgba(0,0,0,.45))}.hero-line{font:clamp(22px,3vw,42px) var(--brush);letter-spacing:.12em}.scroll-pill{display:inline-flex;align-items:center;gap:18px;margin-top:25px;padding:12px 19px;border:1px solid rgba(255,255,255,.45);border-radius:99px;font-size:9px;letter-spacing:.2em}.section{padding:clamp(85px,11vw,160px) clamp(22px,8vw,130px)}.section-head{max-width:940px;margin-bottom:55px}.section-head h2{margin:12px 0;font:clamp(52px,8vw,116px)/1 var(--brush);letter-spacing:-.07em}.section-head h2 em{font-style:normal;color:#0874c9}.section-head>p:last-child{line-height:1.9;color:#5c6873}.light-section{background:#f5f7f4}.floor-tabs,.directory-switch{display:flex;gap:8px;overflow:auto;margin-bottom:20px}.floor-tabs button,.directory-switch button{white-space:nowrap;border:1px solid #cbd6de;background:transparent;padding:12px 20px;font-size:11px;font-weight:800}.floor-tabs button.active,.directory-switch button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.map-frame{position:relative;min-height:480px;border:1px solid #cbd6de;background:#fff;display:grid;place-items:center;text-align:center;overflow:hidden}.map-grid{position:absolute;inset:0;opacity:.25;background-image:linear-gradient(#b8cad6 1px,transparent 1px),linear-gradient(90deg,#b8cad6 1px,transparent 1px);background-size:32px 32px}.map-level{position:absolute;left:4%;top:-.18em;font:clamp(150px,26vw,360px)/1 var(--brush);color:#edf2f4}.map-frame>div:last-child{position:relative}.map-frame b{font:clamp(24px,6vw,64px) var(--brush);display:block;max-width:90vw;word-break:keep-all}.map-frame p{letter-spacing:.35em;font-weight:900}.map-frame small{color:#7b8993}.schedule-section{background:var(--navy);color:#fff}.schedule-controls{display:flex;gap:14px;margin-bottom:32px}.schedule-controls label{font-size:10px;color:#94a9ba}.schedule-controls select{display:block;margin-top:8px;min-width:180px;padding:12px;background:#0d2439;color:#fff;border:1px solid #29435a}.timeline{border-top:1px solid #29435a}.event{display:grid;grid-template-columns:150px 1fr 180px;gap:26px;padding:25px 10px;border-bottom:1px solid #29435a;align-items:center}.event time{font-size:20px;font-weight:900;color:#74d5ff}.event h3{margin:0 0 7px}.event p{margin:0;color:#a9bac7}.event .place{text-align:right;font-size:11px}.directory-section{background:#fff}.entity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.entity-card{min-height:160px;padding:25px;background:var(--card,#071426);color:#fff;display:flex;flex-direction:column;justify-content:space-between;transition:.3s}.entity-card:hover{transform:translateY(-5px);box-shadow:0 15px 35px #0b2f521d}.entity-card small{font-size:8px;letter-spacing:.2em;color:#79cff9}.entity-card h3{font:26px var(--brush);margin:16px 0}.entity-card span{font-size:10px}.footer{background:#020a12;color:#fff;text-align:center;padding:65px 20px}.footer img{width:180px}.footer p{font-size:11px}.footer small{color:#6b7b87}.profile-page{min-height:100vh;background:var(--profile);color:#fff;padding-top:74px}.profile-hero{padding:100px max(7vw,25px) 55px;min-height:55vh;display:flex;flex-direction:column;justify-content:end;background:radial-gradient(circle at 75% 20%,#ffffff18,transparent 38%)}.profile-hero h1{max-width:1000px;font:clamp(55px,9vw,130px)/1 var(--brush);margin:13px 0}.profile-name{font-weight:900}.tag-row{display:flex;gap:8px;flex-wrap:wrap}.tag-row span{font-size:10px;padding:8px 12px;border:1px solid #ffffff70;border-radius:99px}.profile-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:0 max(7vw,25px)}.profile-gallery img{width:100%;height:55vh;object-fit:cover}.profile-body{white-space:pre-wrap;max-width:900px;padding:70px max(7vw,25px);font-size:16px;line-height:2.2}.profile-actions{padding:0 max(7vw,25px) 70px}.quiet-edit{display:inline-block;border:1px solid currentColor;background:transparent;padding:10px 15px;font-size:10px;color:inherit}.auth-page{min-height:100vh;background:var(--navy);display:grid;place-items:center;color:#fff;padding:30px}.back{position:absolute;top:25px;left:30px;font-size:11px}.panel,.editor-form{width:min(640px,94vw);background:#fff;color:var(--ink);padding:clamp(25px,5vw,55px);box-shadow:0 25px 80px #0004}.panel img{display:block;width:200px;height:130px;object-fit:contain;margin:auto}.panel h1{font:38px var(--brush);text-align:center}.panel label,.editor-form>label,.two label{display:block;font-size:11px;font-weight:800;margin:18px 0}.panel input,.editor-form input,.editor-form textarea,.editor-form select{display:block;width:100%;margin-top:8px;border:1px solid #bfccd5;padding:13px;background:#f8fafb}.primary{border:0;background:#086db7;color:#fff;padding:15px 25px;font-weight:900;letter-spacing:.08em}.form-error{color:#d12435;font-size:12px}.editor-page{min-height:100vh;padding:130px max(5vw,20px);background:#edf2f4}.editor-head{max-width:850px;margin:0 auto 35px}.editor-head h1{font:clamp(45px,7vw,85px) var(--brush);margin:8px 0}.editor-form{margin:auto;width:min(850px,100%)}.editor-form fieldset{border:1px solid #ccd7de;margin:24px 0;padding:20px}.editor-form legend{font-size:11px;font-weight:900}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.check{margin-right:20px;font-size:13px}.check input{display:inline;width:auto}.color-picks{display:flex;gap:12px;flex-wrap:wrap}.color-picks input{position:absolute;opacity:0}.color-picks i{display:block;width:40px;height:40px;background:var(--c);border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px #aaa}.color-picks input:checked+i{box-shadow:0 0 0 3px #1294e8}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.upload-slot{border:1px dashed #aabcc8;padding:15px}.upload-slot img{width:100%;height:180px;object-fit:cover;margin-bottom:10px}.upload-button{display:inline-block;padding:10px;background:#e7eef3;font-size:11px}.upload-button input{display:none}.remove-image{border:0;background:none;color:#b22;font-size:11px}.admin-list{max-width:850px;margin:30px auto}.admin-row{background:#fff;padding:18px;margin:8px 0;display:grid;grid-template-columns:1fr auto;gap:15px}.admin-row button{border:0;color:#c22;background:none}.loading{opacity:.65}.ink{color:var(--ink)}.reveal{opacity:0;transform:translateY(25px);transition:.8s cubic-bezier(.2,.8,.2,1)}.reveal.visible{opacity:1;transform:none}@keyframes breath{to{transform:scale(1.08)}}@keyframes float{50%{transform:translateY(-25px) scale(1.1)}}@media(max-width:760px){.topbar{height:64px;padding:0 16px}.topbar nav{display:none}.topbar.open nav{position:absolute;display:flex;flex-direction:column;gap:0;top:64px;left:0;width:100%;padding:18px;background:#061426}.topbar.open nav a{padding:14px;border-bottom:1px solid #ffffff18}.menu{display:block}.mini-logo img{width:48px}.main-logo{width:100vw;height:45vh}.hero-inner{padding-inline:6px}.hero-line{font-size:24px}.section{padding:85px 20px}.section-head h2{font-size:16vw}.map-frame{min-height:350px}.event{grid-template-columns:1fr;gap:7px}.event .place{text-align:left}.entity-grid{grid-template-columns:1fr 1fr}.entity-card{min-height:135px;padding:18px}.entity-card h3{font-size:21px}.schedule-controls{flex-direction:column}.profile-gallery{grid-template-columns:1fr}.profile-gallery img{height:40vh}.two,.upload-grid{grid-template-columns:1fr}.panel,.editor-form{padding:24px}.profile-hero h1{font-size:16vw}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* ================= 追加機能スタイル ================= */
.entity-org-name{margin:0 0 6px;font-size:11px;color:#9fd8ff;letter-spacing:.05em}
.profile-name{font-weight:900;opacity:.85;font-size:14px;letter-spacing:.05em;margin-top:-4px}
.profile-hero-bg{position:absolute;inset:0;height:55vh;background:linear-gradient(180deg,#00000000,#00000055);pointer-events:none}
.blast-link{display:inline-block;margin-top:18px;font-size:12px;font-weight:800;letter-spacing:.05em;border-bottom:2px solid currentColor;padding-bottom:2px}

/* お知らせ */
.announce-section{background:#fff}
.announce-list{display:flex;flex-direction:column;gap:14px;max-width:820px}
.announce-card{position:relative;padding:20px 22px;border:1px solid var(--line);border-left:6px solid #0874c9;background:#f7fbff}
.announce-card.urgent{border-left-color:#e0273f;background:#fff3f4}
.announce-badge{display:inline-block;font-size:10px;font-weight:900;letter-spacing:.1em;padding:3px 10px;border-radius:99px;background:#0874c9;color:#fff;margin-bottom:8px}
.announce-card.urgent .announce-badge{background:#e0273f}
.announce-card h3{margin:4px 0 6px;font-size:18px}
.announce-card p{margin:0 0 8px;color:#444;line-height:1.7;font-size:14px}
.announce-card time{font-size:10px;color:#8a97a1}

/* 混雑状況 */
.congestion-cta{background:var(--navy);color:#fff}
.congestion-page{padding:120px max(6vw,20px) 80px;background:#f5f7f4;min-height:100vh}
.congestion-hero{max-width:760px;margin:0 auto 40px}
.congestion-hero h1{font:clamp(40px,7vw,72px) var(--brush);margin:10px 0}
.congestion-form{margin:0 auto 50px;max-width:640px}
.level-picks{display:flex;gap:14px;margin-top:8px;flex-wrap:wrap}
.level-pick{display:flex;align-items:center;gap:6px;border:1px solid #bfccd5;padding:10px 14px;font-size:12px;font-weight:700;cursor:pointer;flex:1;justify-content:center}
.level-pick input{width:auto}
.congestion-board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:1000px;margin:0 auto}
.congestion-card{padding:22px;border:1px solid var(--line);background:#fff}
.congestion-card h3{margin:0 0 10px;font-size:16px}
.congestion-card .level-tag{display:inline-block;font-weight:900;font-size:13px;padding:4px 12px;border-radius:99px;margin-bottom:6px}
.congestion-card.low .level-tag{background:#dff5e6;color:#1a7a3d}
.congestion-card.mid .level-tag{background:#fff3d6;color:#8a5b00}
.congestion-card.high .level-tag{background:#ffe0e0;color:#c22}
.congestion-card.none .level-tag{background:#eee;color:#888}
.congestion-card small{color:#7b8993;display:block}
.congestion-card ul{margin:8px 0 0;padding-left:16px;font-size:12px;color:#556}

/* ごあいさつ */
.messages-page{padding:120px max(6vw,20px) 80px;background:#fff;min-height:100vh}
.messages-hero{max-width:760px;margin:0 auto 50px}
.messages-hero h1{font:clamp(40px,7vw,72px) var(--brush);margin:10px 0}
.messages-list{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:30px}
.message-card{display:flex;gap:24px;border:1px solid var(--line);padding:26px;background:#fafcfd}
.message-card img{width:120px;height:120px;object-fit:cover;flex-shrink:0;border-radius:6px}
.message-role{font-size:11px;color:#0874c9;font-weight:900;letter-spacing:.08em;margin:0 0 6px}
.message-body h2{margin:0 0 10px;font:26px var(--brush)}
.message-text{white-space:pre-wrap;line-height:1.9;color:#333;margin:0 0 10px;font-size:14px}
.message-author{font-weight:900;font-size:13px;margin:0}

/* 管理者タブ */
.admin-tabs{display:flex;gap:8px;margin-bottom:30px;flex-wrap:wrap}
.admin-tab{border:1px solid #ccd7de;background:#fff;padding:12px 20px;font-size:12px;font-weight:800}
.admin-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
.admin-panel{max-width:850px;margin:0 auto}
.admin-actions{display:flex;gap:8px;align-items:center}
.admin-actions button{border:1px solid #ccd7de;background:#fff;padding:6px 10px;font-size:11px}
.admin-actions button[data-delete-ann],.admin-actions button[data-delete-msg]{color:#c22;border-color:#f0c0c0}

@media(max-width:760px){
  .congestion-board{grid-template-columns:1fr}
  .message-card{flex-direction:column}
  .message-card img{width:100%;height:200px}
}
